题目:用CASE语句计算唯一用户数:
参考答案:
%%sql
SELECT COUNT(DISTINCT user_guid),
CASE
WHEN (state="NY" OR state="NJ") THEN "Group 1-NY/NJ"
WHEN (state="NC" OR state="SC") THEN "Group 2-NC/SC"
WHEN state="CA" THEN "Group 3-CA"
ELSE "Group 4-Other"
END AS state_group
FROM users
WHERE country="US" AND state IS NOT NULL
GROUP BY state_group
返回了4栏
898Group 1-NY/NJ
653Group 2-NC/SC
1417Group 3-CA
6388Group 4-Other
=============================
我自己写得
%%sql
SELECT CASE newuser.state
WHEN ('NY'or 'NJ') THEN 'Group 1'
WHEN ('NC'or 'SC') THEN 'Group 2'
WHEN 'CA' THEN 'Group 3'
ELSE 'Group 4'
END AS stategroup,
COUNT(distinct newuser.user_guid)
FROM
(SELECT user_guid,country,state
FROM users u
WHERE country='US' and state IS NOT NULL ) AS newuser
GROUP BY stategroup
只返回了一栏 Group 1: 9356
?为什么我写得返回了4栏相加的 但是只有一个GROUP 1???
求大神解答!!!
参考答案:
%%sql
SELECT COUNT(DISTINCT user_guid),
CASE
WHEN (state="NY" OR state="NJ") THEN "Group 1-NY/NJ"
WHEN (state="NC" OR state="SC") THEN "Group 2-NC/SC"
WHEN state="CA" THEN "Group 3-CA"
ELSE "Group 4-Other"
END AS state_group
FROM users
WHERE country="US" AND state IS NOT NULL
GROUP BY state_group
返回了4栏
898Group 1-NY/NJ
653Group 2-NC/SC
1417Group 3-CA
6388Group 4-Other
=============================
我自己写得
%%sql
SELECT CASE newuser.state
WHEN ('NY'or 'NJ') THEN 'Group 1'
WHEN ('NC'or 'SC') THEN 'Group 2'
WHEN 'CA' THEN 'Group 3'
ELSE 'Group 4'
END AS stategroup,
COUNT(distinct newuser.user_guid)
FROM
(SELECT user_guid,country,state
FROM users u
WHERE country='US' and state IS NOT NULL ) AS newuser
GROUP BY stategroup
只返回了一栏 Group 1: 9356
?为什么我写得返回了4栏相加的 但是只有一个GROUP 1???
求大神解答!!!