【问题标题】:Multiple aggregate functions in query查询中的多个聚合函数
【发布时间】:2013-03-25 13:51:56
【问题描述】:

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

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

类似:

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

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

【问题讨论】:

    标签: sql where aggregates


    【解决方案1】:

    您基本上可以使用CASE 获得Sample 的值,其结果是通过SUM() 聚合。

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

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

    【讨论】:

      【解决方案2】:

      要获得记录数,请参阅 JW 的回答。同样,要获得样本的总,以及samples>1的样本的总,使用:

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

      【讨论】:

        【解决方案3】:

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

        SELECT COUNT(*), COUNT(*) FILTER (WHERE Samples > 1)
        FROM SampleData
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-24
          • 1970-01-01
          • 1970-01-01
          • 2013-04-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多