我的查询中需要有两个聚合函数,但不知道如何过滤。
我需要样本数和大于1的样本数。
类似的东西。
SELECT COUNT(Samples), COUNT(Samples >1)
FROM SampleData
我可以做一个子查询,但有没有更好的方法来过滤?
基本上你可以将 Sample
使用 CASE
而它的结果是聚合的通过 SUM()
.
SELECT COUNT(Samples),
SUM(CASE WHEN Samples > 1 THEN 1 ELSE 0 END)
FROM SampleData
不过这在大多数RDBMS上都能用。
要获得 记录数,见JW的回答。同理,要得到总的 价值 的样品,以及总 价值 的样本,其中样本>1,使用。
SELECT SUM(Samples) TotalSamples,
SUM(CASE WHEN Samples > 1 THEN Samples ELSE 0 END) SamplesGT1
FROM SampleData
如果你使用的是PostgreSQL,你可以使用标准的 SQL FILTER
条款。
SELECT COUNT(*), COUNT(*) FILTER (WHERE Samples > 1)
FROM SampleData