[英]SQL Percentage - Conditional Sum
我想根據應用語言計算流失百分比並保留值。 我正在使用雪花。
我目前的情況如下:
SELECT i.language, lb.churn_status, SUM(lb.total_users) AS user_count
FROM level_based_churn_retain_comparison AS lb
INNER JOIN sessions AS s
ON s.level_index=lb.level_index
INNER JOIN installs AS i
ON s.user_id=i.user_id
GROUP BY i.language, lb.churn_status
ORDER BY i.language, user_count
輸出是
language churn_status user_count
因此,有了這個非常有想象力的數據(我在 CTE 中擁有的數據讓我很容易)
with level_based_churn_retain_comparison(level_index, total_users, churn_status) as (
select * from values
(10, 100, 'a'),
(20, 400, 'a'),
(30, 300, 'a')
), installs(user_id, language) as (
select * from values
(1, 'en'),
(2, 'en'),
(3, 'fr')
), sessions(user_id, level_index) as (
select * from values
(1, 10),
(2, 20),
(3, 30)
)
你的 SQL + RATIO_TO_REPORT
SELECT
i.language,
lb.churn_status,
SUM(lb.total_users) AS user_count,
100.0 * ratio_to_report(user_count) over() as percent_churn
FROM level_based_churn_retain_comparison AS lb
INNER JOIN sessions AS s
ON s.level_index = lb.level_index
INNER JOIN installs AS i
ON s.user_id = i.user_id
GROUP BY i.language, lb.churn_status
ORDER BY i.language, user_count
我們得到:
語 | CHURN_STATUS | USER_COUNT | PERCENT_CHURN |
---|---|---|---|
zh | 一個 | 500 | 62.5 |
FR | 一個 | 300 | 37.5 |
現在,如果您希望百分比為每個 churn_status,我們可以將其放入 PARTITION BY 子句中,如下所示:
with level_based_churn_retain_comparison(level_index, total_users, churn_status) as (
select * from values
(10, 100, 'a'),
(20, 400, 'b'),
(30, 300, 'a')
), installs(user_id, language) as (
select * from values
(1, 'en'),
(2, 'en'),
(3, 'fr')
), sessions(user_id, level_index) as (
select * from values
(1, 10),
(2, 20),
(3, 30)
)
SELECT
i.language,
lb.churn_status,
SUM(lb.total_users) AS user_count,
100.0 * ratio_to_report(user_count) over(partition by lb.churn_status) as percent_churn
FROM level_based_churn_retain_comparison AS lb
INNER JOIN sessions AS s
ON s.level_index = lb.level_index
INNER JOIN installs AS i
ON s.user_id = i.user_id
GROUP BY i.language, lb.churn_status
ORDER BY i.language, user_count
給予:
語 | CHURN_STATUS | USER_COUNT | PERCENT_CHURN |
---|---|---|---|
zh | 一個 | 100 | 25 |
zh | b | 400 | 100 |
FR | 一個 | 300 | 75 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.