我的查询中需要有两个聚合函数,但不知道如何过滤。
我需要样本数和大于1的样本数。
就像是:
SELECT COUNT(Samples), COUNT(Samples >1)
FROM SampleData
我可以做一个子查询,但是有没有更好的过滤方式?
我的查询中需要有两个聚合函数,但不知道如何过滤。
我需要样本数和大于1的样本数。
就像是:
SELECT COUNT(Samples), COUNT(Samples >1)
FROM SampleData
我可以做一个子查询,但是有没有更好的过滤方式?
那么你基本上可以Sample
使用 using的值CASE
和它的结果是聚合的 via 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,则可以使用标准 SQLFILTER
子句:
SELECT COUNT(*), COUNT(*) FILTER (WHERE Samples > 1)
FROM SampleData