プログラムごとのマークに基づいてユーザーのグループの十分位数を返す次のクエリがあります。
SELECT prog_code,
user_code,
user_mark,
NTILE(10) over (order by user_mark DESC) DECILE
FROM grade_result
where user_mark IS NOT NULL
and prog_year = '2011'
AND prog_code = 'ALPHA'
これを同時に合計40の異なるprog_code値に対して実行する必要があります。これは、39のユニオン結合を介して結合できますが、これは非常に非効率的です(十分位数のように、これを単一のselectステートメントとして実行することはできません。プログラムではなく、すべてのプログラムに対して)。自分で入力しなくても、これらの40個の値のそれぞれに対してユニオンとしてクエリを繰り返す(ループする)方法はありますか?
これが何らかの用途である場合は、プログラムコードと行番号を別のクエリまたはサブクエリで返すことができます。
ROWNUM PROG_CODE
1 ALPHA
2 BETA
3 GAMMA
4 DELTA
5 ECHO