查询中的多个聚合函数

时间:2013-03-25 13:51:56

标签: sql where aggregates

我需要在查询中使用两个聚合函数,但无法弄清楚如何过滤。

我需要样本数量和大于1的样本数量。

类似的东西:

SELECT COUNT(Samples), COUNT(Samples >1)
FROM SampleData

我可以做一个子查询,但是有更好的方法可以像这样过滤吗?

3 个答案:

答案 0 :(得分:2)

您基本上可以使用Sample获得CASE的值,其结果是通过SUM()进行汇总。

SELECT COUNT(Samples), 
       SUM(CASE WHEN Samples > 1 THEN 1 ELSE 0 END) 
FROM   SampleData

这适用于大多数RDBMS。

答案 1 :(得分:0)

要获取记录数,请参阅JW的答案。同样,要获取样本的总,以及样本> 1的样本的总,请使用:

SELECT SUM(Samples) TotalSamples, 
       SUM(CASE WHEN Samples > 1 THEN Samples ELSE 0 END) SamplesGT1
FROM   SampleData

答案 2 :(得分:0)

如果您使用的是PostgreSQL,则可以使用标准的SQL FILTER子句:

SELECT COUNT(*), COUNT(*) FILTER (WHERE Samples > 1)
FROM SampleData