我需要在查询中使用两个聚合函数,但无法弄清楚如何过滤。
我需要样本数量和大于1的样本数量。
类似的东西:
SELECT COUNT(Samples), COUNT(Samples >1)
FROM SampleData
我可以做一个子查询,但是有更好的方法可以像这样过滤吗?
答案 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