如何在Google Sheets查询语言中用不同条件统计多个计数?
问题描述
尝试用不同条件统计多个计数,但将它们合并到同一个查询时出现PARSE错误,单独执行每个查询均正常,合并后无法运行,求助解决方法。
单独执行正常的查询示例
Select count(Col2) where Col2 <= 180 -- 或者 Select count(Col2) where Col2 > 180 -- 或者 Select count(Col2)
合并后无法运行的查询
Select count(Col2) where Col2 <= 180, count(Col2) where Col2 > 180, count(Col2)
出现的错误信息
无法解析函数QUERY参数2的查询字符串:PARSE_ERROR:遇到(原错误信息未完整显示)
解决方法
你原来的写法不符合SQL(包括Google Sheets QUERY语法)的规范,SELECT子句中不能直接给单个聚合函数附加WHERE条件,WHERE是用于全局过滤整行数据的。要在同一查询中按不同条件统计计数,需要使用条件聚合的方式,在COUNT内部通过条件判断筛选符合要求的数据:
方法1:使用IF函数
SELECT COUNT(IF(Col2 <= 180, Col2, NULL)), COUNT(IF(Col2 > 180, Col2, NULL)), COUNT(Col2)
原理:当Col2满足条件时返回字段值,否则返回NULL,而COUNT函数会自动忽略NULL值,从而实现按条件统计。
方法2:使用CASE WHEN语句
SELECT COUNT(CASE WHEN Col2 <= 180 THEN Col2 END), COUNT(CASE WHEN Col2 > 180 THEN Col2 END), COUNT(Col2)
原理和IF函数一致,通过CASE WHEN判断条件,符合条件时返回字段值,否则返回默认的NULL,最终由COUNT统计有效数据。
内容的提问来源于stack exchange,提问作者AlanSTACK
相关产品推荐
相关产品推荐

