admin

在单个查询中获取多列计数

sql

我正在开发一个需要在表上写查询的应用程序,该表将在单个查询中返回多个列数。

经过研究,我能够为单个sourceId开发查询,但是如果我想要多个sourceId的结果,将会发生什么。

select '3'as sourceId,
   (select count(*) from event where sourceId = 3 and plateCategoryId = 3) as TotalNewCount,
   (select count(*) from event where sourceId = 3 and plateCategoryId = 4) as TotalOldCount;

我需要获取多个源ID的TotalNewCount和TotalOldCount,例如(3,4,5,6)

谁能帮忙,如何修改查询以返回三列的结果集,包括列表(3,4,5,6)中所有来源的数据

谢谢


阅读 208

收藏
2021-07-01

共1个答案

admin

您可以一次完成所有源ID:

select source_id
       sum(case when plateCategoryId = 3 then 1 else 0 end) as TotalNewCount,
       sum(case when plateCategoryId = 4 then 1 else 0 end) as TotalOldCount
from event
group by source_id;

如果要限制源ID,请使用where(之前的group by)。

注意:上面的代码在Vertica和MySQL中都可以使用,并且作为标准SQL可以在任何数据库中使用。

2021-07-01