查询中的多个聚合函数

问题描述 投票:1回答:3

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

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

类似的东西。

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

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

sql where aggregates
3个回答
2
投票

基本上你可以将 Sample 使用 CASE 而它的结果是聚合的通过 SUM().

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

不过这在大多数RDBMS上都能用。


0
投票

要获得 记录数,见JW的回答。同理,要得到总的 价值 的样品,以及总 价值 的样本,其中样本>1,使用。

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

0
投票

如果你使用的是PostgreSQL,你可以使用标准的 SQL FILTER 条款。

SELECT COUNT(*), COUNT(*) FILTER (WHERE Samples > 1)
FROM SampleData
© www.soinside.com 2019 - 2024. All rights reserved.