如何对表中两列数据合并后执行GROUP BY与COUNT统计?
解决方案
原始表结构及数据
| c1 | c2 |
|---|---|
| foo | bar |
| bar | nerd |
| bar | bar |
| foo | nerd |
| tick | tock |
期望输出结果
| r1 | count |
|---|---|
| foo | 2 |
| bar | 4 |
| tick | 1 |
| tock | 1 |
| nerd | 1 |
正确SQL查询
SELECT r1, COUNT(*) AS count FROM ( -- 用UNION ALL将c1和c2的所有值纵向合并 SELECT c1 AS r1 FROM your_table_name UNION ALL SELECT c2 AS r1 FROM your_table_name ) AS combined_data -- 按合并后的字段分组统计次数 GROUP BY r1 -- 可选:按次数降序、字段名排序,匹配示例结果顺序 ORDER BY count DESC, r1;
你之前用UNION ALL未成功,问题出在只做了数据拼接,没对拼接后的结果做分组统计。UNION ALL仅完成两列数据的纵向合并,必须基于这个合并后的结果集执行分组聚合,才能得到每个值的出现次数。
内容的提问来源于stack exchange,提问作者user24929248
相关产品推荐
相关产品推荐

