我有一个国家列表,对于每个国家,我都有一个如下所示的表格(第一列:user
,第二列:user_type
,第三列:date
):
| 用户|用户类型|日期|
| - ------| - ------| - ------|
| 用户1|国家|二○二二年十月一日|
| 用户1|国家|二○二二年十月一日|
| 用户2|国家|二○二二年十月一日|
| 用户2|国际|二○二二年十月一日|
| 用户3|国家|二○二二年十月二日|
| 用户1|不详|二○二二年十月二日|
| 用户1|国家|二〇二二年十月三日|
我希望每天在一行中获取每种类型的所有不同用户,如下所示(4列:日期、第一用户类型、第二用户类型、第三用户类型):
| 日期|第一用户类型|第二用户类型|第三用户类型|
| - ------| - ------| - ------| - ------|
| 二○二二年十月一日|第二章|1个|无|
| 二○二二年十月二日|1个|无|1个|
| 二〇二二年十月三日|1个|无|无|
但是,如果运行此查询:
SELECT
date, user_type, COUNT(distinct user) as num_users
FROM "country"."table"
WHERE
date between '2022-10-01' AND '2022-10-03'
GROUP BY date, user_type
ORDER BY date, user_type
然后我得到了正确的结果,但同一日期在不同的行中,如下所示:
| 日期|用户类型|用户数|
| - ------| - ------| - ------|
| 二○二二年十月一日|国家|第二章|
| 二○二二年十月一日|国际|1个|
| 二○二二年十月一日|不详|无|
| 二○二二年十月二日|国家|1个|
| 二○二二年十月二日|国际|无|
| 二○二二年十月二日|不详|1个|
| 二〇二二年十月三日|国家|1个|
| 二〇二二年十月三日|国际|无|
| 二〇二二年十月三日|不详|无|
但还有一个额外的困难:全球共有3个user_types
:"National"、"International"和"Unknown",但问题是有些国家只有"National",或者"National"和"Unknown"(没有"International"),我希望结果显示为0(即使那个user_type
在那个国家不存在),查询应该对所有国家都一样,只更改"country
"。
(P.S:查询应在AWS Athena中运行)
有什么想法吗?
2条答案
按热度按时间pokxtpni1#
条件聚合应在以下位置执行:
检查here演示。
rdlzhqv92#
希望这能有所帮助!