count sql中的出现次数

nxowjjhe  于 2021-08-01  发布在  Java
关注(0)|答案(2)|浏览(431)

我有一张表,上面有下列数据

| id | type |
-------------
| 1  | a    |
| 1  | b    |
| 1  | a    |
| 2  | a    |
| 2  | b    |
| 3  | a    |

我想知道每种类型的id有多少次出现

| id | a | b |
| 1  | 2 | 1 |
| 2  | 1 | 1 |
| 3  | 1 | 0 |

sql中有没有一种方法(类似于透视表)

62o28rlo

62o28rlo1#

我建议使用条件聚合。这是一个跨数据库的解决方案,比特定于供应商的解决方案更灵活(至少同样高效):

select
    id,
    sum(case when type = 'a' then 1 else 0 end) a,
    sum(case when type = 'b' then 1 else 0 end) b
from mytable
group by id
dfty9e19

dfty9e192#

在mssqlserver上,您可以使用以下内容(示例数据由 values() 构造函数)(我不知道其他sql风格):

select * from (
    select id, t
    from (
        values 
            (1, 'a'),
            (1, 'b'),
            (1, 'a'),
            (2, 'a'),
            (2, 'b'),
            (3, 'a')
    ) z(id, t)
) x
pivot(count(t) for t in (a, b)) as y

相关问题