在 SQL 中计算流失率:如何在单个查询中以百分比显示流失和未流失的客户?

问题描述 投票:0回答:1

我正在使用 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 子句适用于查询的所有行,所以我如何在同一个查询中计算所有行?

也许需要子查询?我将不胜感激任何帮助。

sql sql-server
1个回答
0
投票

正如 @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
© www.soinside.com 2019 - 2024. All rights reserved.