sql打印按行计数,条件在计数内

vaj7vani  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(271)

我是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中实现这一点???提前谢谢

tzcvj98z

tzcvj98z1#

可以使用条件表达式:

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)支持重用 select 合同条款 group by 子句,以便简化 group by 条款如下:

group by new_name

其他数据库支持位置参数(例如postgres和oracle):

group by 1

相关问题