我正在开发一个应用程序,我需要在表上编写查询,这将在单个查询中返回多个列计数。
经过研究,我能够为单个sourceId开发查询,但如果我想要多个sourceIds的结果会发生什么。
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)
由于
答案 0 :(得分:0)
您可以一次执行所有源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应该适用于任何数据库。