1

我的查询中需要有两个聚合函数,但不知道如何过滤。

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

就像是:

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

我可以做一个子查询,但是有没有更好的过滤方式?

4

3 回答 3

2

那么你基本上可以Sample使用 using的值CASE和它的结果是聚合的 via SUM()

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

不过,这将适用于大多数 RDBMS。

于 2013-03-25T13:52:48.297 回答
0

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

SELECT SUM(Samples) TotalSamples, 
       SUM(CASE WHEN Samples > 1 THEN Samples ELSE 0 END) SamplesGT1
FROM   SampleData
于 2013-03-25T13:59:19.197 回答
0

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

SELECT COUNT(*), COUNT(*) FILTER (WHERE Samples > 1)
FROM SampleData
于 2020-05-07T18:49:35.237 回答