我正在使用 IBM Telco 数据集,以下是表格示例:
客户ID | 流失值 |
---|---|
101 | 1 |
102 | 0 |
churn_value = 1 代表本季度流失的客户,0 代表没有流失的客户。我想计算流失率并显示有多少客户流失了以及有多少没有流失。
流失率的公式:**(流失的客户 ÷ 时间段开始时的客户总数)x 100。
**
流失的客户是那些 churn_value = 1 的客户,所以:
select count (*) as churned_customers
from Telco_customer_churn where churn_value=1;
不使用任何过滤器的所有客户总数:
select count(*) as total_customers
from Telco_customer_churn;
我知道我可以从两个查询中获取值并将它们放入公式中,例如:
1869/7043 * 100 = 26.5% 流失
7043-1869 = 5174/7043 * 100 = 73.4% 未搅拌
我不知道如何将其变成一个查询。我希望它显示为:
搅动 | 没有流失 |
---|---|
26.5 | 73.4 |
如何将其变为百分比?我也很困惑,因为 where 子句适用于查询的所有行,所以我如何在同一个查询中计算所有行?
也许需要子查询?我将不胜感激任何帮助。
正如 @Dale K 所提到的,这可以使用条件聚合来完成:
SELECT COUNT(CASE WHEN churn_value = 1 THEN 1 END) * 100.0 / COUNT(*) AS churned,
COUNT(CASE WHEN churn_value = 0 THEN 1 END) * 100.0 / COUNT(*) AS not_churned
FROM mytable