0

合計ですべてのカテゴリの少なくとも 80% を含むグループのみの数量を示す、いくつかのカテゴリでグループ化するための SQL クエリが必要です。他のまれなカテゴリ (合計の最大 20% を含む) は「その他」のように表す必要があります。

したがって、リンゴをカテゴリの色でグループ化するクエリの結果は、次のようになります。

RED    1118 44% )
YELLOW  711 28% > at least 80%
GREEN   229  9% )
other   482 19%

どうやってするか?

4

1 に答える 1

0

集計関数と分析関数を組み合わせてこれを行います。最も希少な色の累積合計が 20% 未満の場合、その色は「その他」のカテゴリに分類されます。

select (case when cumcntdesc < totalcnt * 0.2 then 'other'
             else color
        end) as color, sum(cnt) as cnt
from (select color, count(*) as cnt,
             sum(count(*)) over (order by count(*) asc) as cumcntdesc,
             sum(count(*)) over () as totalcnt
      from t
      group by color
     ) t
group by (case when cumcntdesc < totalcnt * 0.2 then 'other'
               else color
          end)

ここにSQLフィドルがあります。

于 2013-07-31T13:27:49.833 に答える