如何在Google Sheets QUERY函数中用SUM()过滤无效数据及工时不足10的员工?
Google Sheets QUERY函数优化方案
问题分析
当前统计员工营收的QUERY函数返回了两类无效数据:包含"Online Sales"未关联人员项,以及总工时不足10小时的员工。之前尝试的WHERE SUM(O) > 10、GROUP BY F AND SUM(O) > 10写法不符合Google Sheets QUERY语法规范,因此被系统拒绝。
修改后的完整公式
=QUERY(Master!A2:O, "SELECT F, SUM(O), SUM(G) WHERE A >= date '" & text(D3,"yyyy-MM-dd") & "' and A <= date '" & text(D5,"yyyy-MM-dd") & "' AND UPPER(F) contains '"&$L3&"' AND UPPER(D) contains '"&$L5&"' AND UPPER(F) != 'ONLINE SALES' GROUP BY F HAVING SUM(O) > 10 ORDER BY SUM(G) DESC LABEL SUM(G) 'Revenue', SUM(O) 'Work Hours', F 'Employee'")
修改说明
- 过滤"Online Sales"无效项:在WHERE子句中新增
AND UPPER(F) != 'ONLINE SALES',在分组前直接排除这条无效数据,避免不必要的聚合计算。 - 筛选工时达标员工:在
GROUP BY F之后添加HAVING SUM(O) > 10——HAVING是Google Sheets QUERY中专门用于过滤聚合后分组结果的关键字,这是处理聚合条件的正确语法。
常见错误原因
WHERE SUM(O) > 10错误:WHERE仅能过滤原始行数据,无法使用SUM这类聚合函数(聚合结果在分组后才生成)。GROUP BY F AND SUM(O) > 10错误:GROUP BY后不能直接用AND追加聚合条件,必须使用HAVING关键字声明分组过滤规则。
内容的提问来源于stack exchange,提问作者Stefan Meier
相关产品推荐
相关产品推荐

