1

vegetation私は2列で呼ばれるテーブルを持っています:
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

これは SQL の予約語であるため、ct代わりにを使用します。count

于 2012-11-17T18:03:47.620 に答える