我对SQL很陌生。我有一张列有如下数据的表格
+-----+-------+
|Name | value |
+-----+-------+
|AAA | 25 |
|AAA | 60 |
|BBB | 40 |
|BBB | 200 |
|CCC | 1010 |
|CCC | 451 |
|CCC | 45 |
|DDD | 20 |
+-----+-------+我要做的是得到下面的输出
+-------+-------+
|Name | COUNT |
+-------+-------+
|AAA | 2 |
|DDD | 1 |
|OTHERS | 5 |
+-------+-------+如何在SQL中实现这一点?提前谢谢
发布于 2020-06-17 12:47:30
您可以使用条件表达式:
select
case when name = 'AAA' then name else 'OTHERS' end new_name,
count(*) cnt
from mytable
group by case when name = 'AAA' then name else 'OTHERS' end一些数据库(即MySQL和MariaDB)支持重用在group by子句中的select子句中定义的列别名,因此可以将group by子句简化为:
group by new_name其他数据库支持位置参数(Postgres和Oracle是两个例子):
group by 1https://stackoverflow.com/questions/62429350
复制相似问题