テーブルの行を個別の時間枠でグループ化したいと思います。個別の時間枠でグループ化する
例として、我々は空港で出発のリストを持っている想像してみましょう:次のクエリを使用して、完全な時間(日、週、...)によって
| Departure | Flight | Destination |
| 2016-06-01 10:12:00 | LH1234 | New York |
| 2016-06-02 14:23:00 | LH1235 | Berlin |
| 2016-06-02 14:30:00 | LH1236 | Tokio |
| 2016-06-03 18:45:00 | LH1237 | Belgrad |
| 2016-06-04 04:10:00 | LH1237 | Rio |
| 2016-06-04 06:20:00 | LH1237 | Paris |
私がすることができます簡単にグループのデータを:
select to_char(departure, 'HH24') as "full hour", count(*) as "number flights"
from departures
group by to_char(departure, 'HH24')
この結果、次の表に示すようになります。今
| full hour | number flights |
| 04 | 1 |
| 06 | 1 |
| 10 | 1 |
| 14 | 2 |
| 18 | 1 |
私の質問:個々の時間枠でグループのデータにエレガントな方法(または
ベストプラクティス)があります。 私が探している結果は以下の通りです:
| time frame | number flights |
| 2016-05-31 22:00 - 2016-06-01 06:00 | 0 |
| 2016-06-01 06:00 - 2016-06-01 14:00 | 1 |
| 2016-06-01 14:00 - 2016-06-01 22:00 | 0 |
| 2016-06-01 22:00 - 2016-06-02 06:00 | 0 |
| 2016-06-02 06:00 - 2016-06-02 14:00 | 0 |
| 2016-06-02 14:00 - 2016-06-02 22:00 | 2 |
| 2016-06-02 22:00 - 2016-06-03 06:00 | 0 |
| 2016-06-03 06:00 - 2016-06-03 14:00 | 0 |
| 2016-06-03 14:00 - 2016-06-03 22:00 | 1 |
| 2016-06-03 22:00 - 2016-06-04 06:00 | 1 |
| 2016-06-04 06:00 - 2016-06-04 14:00 | 1 |
| 2016-06-04 14:00 - 2016-06-04 22:00 | 0 |
| 2016-06-04 22:00 - 2016-06-05 06:00 | 0 |
(。。0便での行は関係ありません彼らは問題のより良い視覚化のためだけに存在している)のための
おかげで、あなたの事前に回答してください。 :-) Peter
時間ものを行うために派生テーブルにcase式を使用します。それによってグループ化されます。 – jarlh
時間枠はどのようにまたはどこに定義されていますか?そこから、実際のクエリを導出することができる。 – Grayson
フライトが正確に6:00にある場合は、時間枠を数えますか? – mathguy