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

SQL按dealer分组统计laptop、desktop、tablet数量的方法

需求说明

现有数据表结构与样例数据如下:

dealerdesktoptablet
A10
A10
B01
C00
A01
A10
C01
C00
C00
B01
B00
B00
A00

需要完成以下统计:

  • 按dealer字段分组
  • 分组后分别统计三类设备的记录数:
    • desktop数量:desktop = 1的记录
    • laptop数量:满足desktop = 0 AND tablet = 0的记录
    • tablet数量:tablet = 1的记录
  • 最终输出字段顺序为dealer | laptop | desktop | tablet

基础分组语句只能统计每个dealer的总记录数,无法实现分类计数:

SELECT dealer, COUNT(*) FROM table
GROUP BY dealer
实现方法

用条件聚合即可完成分类统计,在聚合函数内写入匹配规则,只统计符合对应类型的记录:

SELECT
  dealer,
  SUM(CASE WHEN desktop = 0 AND tablet = 0 THEN 1 ELSE 0 END) AS laptop,
  SUM(CASE WHEN desktop = 1 THEN 1 ELSE 0 END) AS desktop,
  SUM(CASE WHEN tablet = 1 THEN 1 ELSE 0 END) AS tablet
FROM 你的实际表名
GROUP BY dealer;

补充说明

  • 上述写法的逻辑是逐行判断记录所属类型,匹配到对应类型就标记为1,否则标记为0,分组后对每类的标记值求和,结果就是该类型的记录总数
  • 也可以用COUNT函数实现相同效果,写法为COUNT(CASE WHEN 匹配规则 THEN 1 END),COUNT会自动忽略NULL值,不符合规则的记录不会被计入,和SUM写法执行结果完全一致
  • 针对提供的样例数据,执行上述SQL后返回结果如下:
dealerlaptopdesktoptablet
A131
B202
C301

注意:如果你的表名是table,属于SQL保留关键字,查询时需要做转义:MySQL环境用反引号包裹写为`table`,SQL Server环境用方括号包裹写为[table],否则会报语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 11:09:28