首页 > 解决方案 > 在 BigQuery 中将两个查询与 case 语句相结合

问题描述

我是 SQL 新手,一直在尝试组合两个查询,按星期几('weekday' - 星期几编码 1-7)和用户类型('member_casual' - 会员或临时用户)。我设法使用 case 语句将它们组合到一个表中,并使用以下查询:

SELECT weekday, 
  CASE WHEN member_casual = 'member' THEN COUNT (*) END AS member_total,
  CASE WHEN member_casual = 'casual' THEN COUNT (*) END AS casual_total,
FROM
  `case-study-319921.2020_2021_Trip_Data.2020_2021_Rides_Merged`
GROUP BY  weekday, member_casual;

生成一个如下所示的表:

工作日 member_total 休闲总计
1 1 无效的 330529
2 1 308760 无效的
3 2 无效的 188687
4 2 316228 无效的
5 3 330656 无效的
6 3 无效的 174799

ETC...

我可以看到这可能与我按“工作日”“会员休闲”分组的事实有关,但是如果从 GROUP BY 语句中删除“会员休闲”,我会收到错误消息。我试图改用 CASE IF 语句,但还没有找到解决方案。

标签: sqlgoogle-bigquery

解决方案


你想要countif()

SELECT weekday, 
       COUNTIF(member_casual = 'member') AS member_total,
       COUNTIF(member_casual = 'casual') AS casual_total,
FROM`case-study-319921.2020_2021_Trip_Data.2020_2021_Rides_Merged`
GROUP BY weekday;

推荐阅读