次のようなpostgresqlクエリがあります。
with r as (
select
1 as reason_type_id,
rarreason as reason_id,
count(*) over() count_all
from
workorderlines
where
rarreason != 0
and finalinsdate >= '2012-12-01'
)
select
r.reason_id,
rt.desc,
count(r.reason_id) as num,
round((count(r.reason_id)::float / (select count(*) as total from r) * 100.0)::numeric, 2) as pct
from r
left outer join
rtreasons as rt
on
r.reason_id = rt.rtreason
and r.reason_type_id = rt.rtreasontype
group by
r.reason_id,
rt.desc
order by r.reason_id asc
これは、理由 ID、その理由 ID に関連付けられた説明、その理由 ID を持つエントリの数、およびその数値が表す合計の割合の 4 つの列を含む結果のテーブルを返します。
この表は次のようになります。
私がやりたいことは、理由 ID を持つエントリの総数に基づいて上位 10 件の結果のみを表示することです。ただ、余ったものは「その他」という記述で別の行にまとめたいと思います。どうすればいいですか?