ウィンドウ関数を使用できます。これが数値であると仮定します:
select cobrand_id, avg(xsum) as median
from (select m.*,
row_number() over (partition by cobrand_id order by xsum) as seqnum,
count(*) over (partition by cobrand_id) as cnt
from tmp_median m
) m
where 2*seqnum in (cnt, cnt + 1, cnt + 2)
group by cobrand_id;
where
句は、cobrand_id
ごとに行を1または2にフィルタリングします (2*
に注意してください )、したがって、これは各パーティションの偶数と奇数の両方で機能します。これらの値の平均が中央値になります。