【发布时间】:2021-09-22 03:13:51
【问题描述】:
我正在尝试为每个id 计算用户下载的不同app 的数量,并按类别对计数进行分组。单独查询的示例如下:
SELECT id
,COUNT(DISTINCT app) AS gaming_apps
FROM apps_table
WHERE app IN ('Clash of Clans', 'Valorant', 'PUBG')
GROUP BY id
SELECT id
,COUNT(DISTINCT app) AS msg_apps
FROM apps_table
WHERE app IN ('Telegram', 'WhatsApp', 'Signal', 'FBMessenger')
GROUP BY id
SELECT id
,COUNT(DISTINCT app) AS fin_apps
FROM apps_table
WHERE app IN ('Yahoo Finance', 'Robinhood')
GROUP BY id
理想情况下,我想返回一个包含idgaming_appsmsg_appsfin_apps 列的表。我想到了LEFT JOIN 3 个查询,但我不确定如何,并且将每个查询包装为子查询太笨拙了。
我也试过这个,但无济于事,因为每次下载或应用更新都会插入一个新行:
SELECT id
,COUNT(CASE WHEN app IN ('Clash of Clans', 'Valorant', 'PUBG') THEN 1 ELSE NULL END) AS gaming_apps
,COUNT(CASE WHEN app IN ('Telegram', 'WhatsApp', 'Signal', 'FBMessenger') THEN 1 ELSE NULL END) AS msg_apps
,COUNT(CASE WHEN app IN ('Yahoo Finance', 'Robinhood') THEN 1 ELSE NULL END) AS fin_apps
FROM apps_table
GROUP BY id
【问题讨论】:
-
签出 COUNT_IF