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

时间:2017-10-23 12:06:46

标签: mysql sql vertica

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

经过研究,我能够为单个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)

由于

1 个答案:

答案 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,请使用wheregroup by之前)。

注意:上述内容适用于Vertica和MySQL,而标准SQL应该适用于任何数据库。