ORACLE質問 PART2
at TECH
502:デフォルトの名無しさん
08/04/11 13:16:21
>>499
-- (KINGAKUの絶対値毎にIDの逆順でランク付けした値) ≦ (KINGAKUの絶対値毎の+と−の個数の差) の
-- 行を選択しているつもり。
-- 誰かもっと短くしてくれ。
select id, kingaku from (
select tbl.id, tbl.kingaku, rank() over (partition by abs(tbl.kingaku) order by id desc) r, valid_rows from (
select * from hoge where kingaku >= 0 order by id desc
) tbl join (
select phoge.kingaku, plus_count - nvl(minus_count,0) valid_rows from (
select kingaku, count(*) plus_count from hoge where kingaku >= 0 group by kingaku
) phoge left join (
select kingaku, count(*) minus_count from hoge where kingaku < 0 group by kingaku
) mhoge on (phoge.kingaku = - mhoge.kingaku)
) ct on (tbl.kingaku = ct.kingaku)
) where r <= valid_rows order by id;
-- まあ、SQLだけでどうにかしようなんて考えない方がいいんじゃね?
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4316日前に更新/123 KB
担当:undef