私はこのテーブルを持っています:
| DAY | TRIMESTER |
Dayは整数値であり、常に増加します(0日目から経過する秒数をカウントします)。TRIMESTERには、文字列値('FIRST'、'SECOND'、'THIRD'など)が含まれています。学期のリストを正しい順序で取得する必要があります。
SELECT DISTINCT TRIMESTER FROM table
戻り値:
| TRIMESTER |
| FIRST |
| THIRD |
| SECOND |
私はこれが私の問題を解決すると評価しました:
SELECT DISTINCT TRIMESTER, SUM(DAY) FROM table GROUP BY TRIMESTER ORDER BY SUM(DAY)
必要なものを出力し、データベースによるコンピューティングの必要性が少なくなる、より優れたソリューションはありますか?データベースはOracle11gであり、テーブルは非常に大きくなるはずです。
サンプルデータ:
| DAY | TRIMESTER |
| 0 | FIRST |
| 10 | FIRST |
| 12 | FIRST |
| 20 | FIRST |
| 30 | SECOND |
| 35 | SECOND |
| 46 | THIRD |
「FIRST」、「SECOND」、「THIRD」の順に並べる必要があります。とにかく、私はTRIMESTER列のキーを制御できません。それらは文字列であり、任意の文字列である可能性があります。名前で並べ替えることはできません。私はそれらがDAY値の「範囲」をカバーしていることを知っているだけです。たとえば、例で「DAY」の値が31〜34の場合、それらはすべて、トリメスター列に「SECOND」の値があります。