在 BigQuery 中将两个查询与 case 语句相结合
Posted
技术标签:
【中文标题】在 BigQuery 中将两个查询与 case 语句相结合【英文标题】:Combining two queries with case statement in BigQuery 【发布时间】:2021-07-29 18:44:55 【问题描述】:我是 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;
生成的表格如下所示:
Row | weekday | member_total | casual_total |
---|---|---|---|
1 | 1 | null | 330529 |
2 | 1 | 308760 | null |
3 | 2 | null | 188687 |
4 | 2 | 316228 | null |
5 | 3 | 330656 | null |
6 | 3 | null | 174799 |
等等……
我可以看到这可能与我按“工作日”和“会员休闲”分组的事实有关,但是如果从 GROUP BY 语句中删除“会员休闲”,我会收到错误消息。我尝试过使用 CASE IF 语句,但还没有找到解决方案。
【问题讨论】:
【参考方案1】:你想要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;
【讨论】:
成功了!谢谢你。我将如何添加两列,分别代表休闲和会员的每周日平均值? @JeffHenry 。 . .您应该以 questions 而不是 cmets 的形式提出新问题。以上是关于在 BigQuery 中将两个查询与 case 语句相结合的主要内容,如果未能解决你的问题,请参考以下文章
在 BigQuery 中按 Max(values) 返回列的名称。错误:“运算符 CASE 没有匹配的签名;”大查询
如何在 node.js 环境中将查询语句传递给 bigquery
如何在 SQL 中将 CASE 表达式与 SUM 函数一起使用?