1

次のデータ構造を持つテーブルがあります。

 terminal    |  load_time_mns  |  vehicle
_________________________________________
 Terminal 1  |   3             |   AA
 Terminal 2  |  10             |   AF
 Terminal 1  |   1             |   BF
 Terminal 6  |   3             |   QRS
 Terminal 6  |   1.4           |   AA
 Terminal 3  |   2.5           |   OP

各端末からロード時間の間隔内訳を取得しようとしています。たとえば、上記の表の場合、次のような内訳を作成しようとしています。

terminal     | [0-1 mns]    |  [1-2 mns]    |    [2-3 mns]    |
_______________________________________________________________
Terminal 1   |    0         |     1         |       1    
_______________________________________________________________
Terminal 2   |    0         |     0         |       0     
_______________________________________________________________
Terminal 3   |    0         |     0         |       1
_______________________________________________________________
Terminal 6   |    0         |     1         |       1        

少しグーグルで調べた後、pivot() 関数とクロス集計クエリに注目する必要があるようです。私はそれらの2つを読んでいますが、まだ完全に取得できていません

4

3 に答える 3

2

このようなものが役立つかもしれません:

クエリ 1 :

SELECT
  terminal,
  count(CASE WHEN load_time_mns >= 0 AND load_time_mns < 1 THEN 1 END) [0-1 mns],
  count(CASE WHEN load_time_mns >= 1 AND load_time_mns < 2 THEN 1 END) [1-2 mns],
  count(CASE WHEN load_time_mns >= 2 AND load_time_mns < 3 THEN 1 END) [2-3 mns]
FROM t
GROUP BY terminal

結果

|   TERMINAL | 0-1 MNS | 1-2 MNS | 2-3 MNS |
|------------|---------|---------|---------|
| Terminal 1 |       0 |       1 |       0 |
| Terminal 2 |       0 |       0 |       0 |
| Terminal 3 |       0 |       0 |       1 |
| Terminal 6 |       0 |       1 |       0 |

ここでフィドル。

あなたの例1では、[0-1]範囲に含めていませんが3、範囲に含めていることに注意してください[0-3]。これは正しくないようです。

于 2013-10-28T23:41:28.740 に答える