SQL实现按行计算标签总和 分组统计对应总用户数
实现方案
把语句中的your_table_name替换为实际表名即可直接使用。
通用SQL写法(兼容MySQL、PostgreSQL、Spark SQL、Hive等绝大多数数据库)
SELECT (label1 + label2 + label3) AS label_sum, SUM(users) AS users_sum FROM your_table_name GROUP BY label_sum;
兼容老版本数据库的写法
部分旧版本数据库不支持GROUP BY引用查询别名,可以直接重复计算逻辑:
SELECT (label1 + label2 + label3) AS label_sum, SUM(users) AS users_sum FROM your_table_name GROUP BY (label1 + label2 + label3);
含NULL值处理的优化写法
如果label字段可能存在NULL值,用COALESCE函数把NULL转成0避免求和结果异常:
SELECT (COALESCE(label1, 0) + COALESCE(label2, 0) + COALESCE(label3, 0)) AS label_sum, SUM(users) AS users_sum FROM your_table_name GROUP BY label_sum;
样例运行结果
针对你给出的测试数据,最终输出为:
| label_sum | users_sum |
|---|---|
| 1 | 66 |
| 2 | 77 |
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

