snowflake-cloud-data-platform - SQL 根据列字符串值计算不同的用户 ID
问题描述
我正在尝试创建一个新的数据表,该表在两个单独的列中包含每周的用户总数,来自Platform = 'Web'的不同用户的计数和来自Platform = 'iOS' 或 'Android'的不同用户的计数
我在下面的尝试没有奏效。有人可以建议吗?
数据源:
DATE USER_ID Platform
1/1/2020 1223 Web
1/2/2020 2032 iOS
1/3/2020 2432 Android
1/4/2020 20311 iOS
1/4/2020 2443 Android
SQL 尝试
SELECT DATE_TRUNC(week, d.DATE) as DATE,
COUNT(DISTINCT d.USER_ID WHERE d.PLATFORM = 'Web') AS USER_COUNT_WEB,
COUNT(DISTINCT d.USER_ID WHERE d.PLATFORM = 'Android' OR 'iOS') AS USER_COUNT_PHONE
FROM data d
GROUP BY 1;
目标表:
DATE User_Count_Web User_count_Phone
1/1/2020 12 230
1/8/2020 20 442
1/15/2020 24 533
解决方案
这是一种方法:
SELECT
DATE_TRUNC(week, d.DATE) as DATE,
COUNT(DISTINCT case when d.PLATFORM = 'Web' then d.USER_ID end) AS USER_COUNT_WEB,
COUNT(DISTINCT case when d.PLATFORM in ('Android','iOS') then d.USER_ID end) AS USER_COUNT_PHONE
FROM data d
GROUP BY 1;