You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL多字段分组统计需求:无需WHERE子句实现多维度计数

解决多维度分组统计的SQL方案

嘿,我懂你的需求啦——你不想每次只能统计单个primaryAssembly的独立BadgeID数量,而是希望一次查询就能按SessionNumber和EventDate分组,同时算出多个不同primaryAssembly对应的distinct BadgeID数,直接得到多列统计结果对吧?

你可以用条件聚合的写法来实现,不需要WHERE子句过滤,直接在聚合函数里加判断逻辑就行。修改后的SQL语句如下:

SELECT 
    SessionNumber,
    EventDate,
    COUNT(DISTINCT CASE WHEN primaryAssembly = 'Critical Care' THEN BadgeID END) AS CriticalCareCount,
    COUNT(DISTINCT CASE WHEN primaryAssembly = 'Pulmonary Circulation' THEN BadgeID END) AS PulmonaryCirculationCount
    -- 如果还有其他需要统计的primaryAssembly,继续按上面的格式加列就行
FROM beacon
GROUP BY SessionNumber, EventDate
ORDER BY EventDate;

简单解释下这个写法:

  • CASE WHEN primaryAssembly = 'XXX' THEN BadgeID END:只有当primaryAssembly匹配目标值时,才返回对应的BadgeID,否则返回NULL
  • COUNT(DISTINCT ...):会自动忽略NULL值,统计每个分组下符合条件的独立BadgeID数量
  • 这样你可以一次性把所有需要统计的primaryAssembly都写成单独的列,不需要拆分多次查询或者用WHERE过滤

如果后续需要新增其他primaryAssembly的统计,只需要在SELECT里再加一行类似的COUNT(DISTINCT CASE...)语句就行,非常灵活。

内容的提问来源于stack exchange,提问作者user1098063

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:15:12