1

我有一个名为vegetation2 列的表:
type,count

我想将计数值小于平均计数的所有行的计数和所有计数值较高的行的计数相加。

我不知道如何在 group by 子句中反映这一点......(或其他地方?)。

我想另一种方法应该是为所有低于平均水平的数据分配一个值,为所有高于平均水平的数据分配另一个值,然后按此值分组。但我刚刚开始,也不知道该怎么做。

4

1 回答 1

1
SELECT sum(CASE WHEN ct <= x.avg_ct THEN ct ELSE 0 END) AS sum_ct_low
      ,sum(CASE WHEN ct >  x.avg_ct THEN ct ELSE 0 END) AS sum_ct_hi
FROM vegetation v
    ,(SELECT avg(ct) AS avg_ct FROM vegetation) x

平均值是单个值,您可以只是CROSS JOIN对基表的子查询(逗号分隔的表列表意味着交叉连接)。
然后用一个简单的CASE语句过滤。

我使用ct而不是count,因为这是SQL 中的保留字

于 2012-11-17T18:03:47.620 回答