You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在SQL中将列中不同字段分组归类并汇总列值?

单条SQL实现OS分类汇总点击量

要完成这个分类汇总的需求,咱们可以用CASE语句对操作系统进行分组映射,再结合SUM()聚合函数和GROUP BY来统计总点击量,具体SQL代码如下:

SELECT
    CASE
        WHEN os IN ('iOS', 'Android') THEN 'phone'
        WHEN os IN ('Windows', 'Ubuntu') THEN 'computer'
    END AS os,
    SUM(clicks) AS clicks
FROM
    your_table_name  -- 记得把这里替换成你的实际表名
GROUP BY
    CASE
        WHEN os IN ('iOS', 'Android') THEN 'phone'
        WHEN os IN ('Windows', 'Ubuntu') THEN 'computer'
    END;

代码说明:

  • CASE语句:负责把原表中的os值映射成你需要的两类——phone(包含iOS、Android)和computer(包含Windows、Ubuntu),并将这个新的分类字段命名为os
  • SUM(clicks):对每个分类下的所有clicks值求和,得到该类的总点击量
  • GROUP BY:按照我们通过CASE生成的分类结果进行分组,这样才能确保每个分类只返回一条汇总记录

如果你的数据库支持在GROUP BY中使用SELECT子句的别名(比如MySQL 5.7及以上、PostgreSQL、SQL Server等),还可以简化GROUP BY部分,让代码更简洁:

SELECT
    CASE
        WHEN os IN ('iOS', 'Android') THEN 'phone'
        WHEN os IN ('Windows', 'Ubuntu') THEN 'computer'
    END AS os,
    SUM(clicks) AS clicks
FROM
    your_table_name
GROUP BY
    os;

这种写法更清爽,但要注意部分老版本数据库可能不支持这个特性,这时候用第一种写法就稳啦。

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

火山引擎 最新活动