0

これが私のテーブル emp の 2 つの列です。動的 Web アプリケーション (サーブレット、jsp) で 2 つの個別のクエリを起動しようとしています。ここで、テーブルからデータをフェッチできます。

+-------------------------+----------+
| date                    | serialNo |
+-------------------------+----------+
| 2012-11-21 15:14:08.323 |        6 |
| 2012-11-21 12:48:12.067 |        6 |
| 2012-11-21 09:00:16.559 |        8 |
| 2012-11-21 05:24:20.091 |        9 |
| 2012-11-21 01:11:24.413 |        6 |
| 2012-11-21 14:57:28.531 |       11 |
| 2012-11-21 17:04:31.86  |        9 |
| 2012-11-21 19:33:36.259 |       13 |
| 2012-11-21 20:21:40.524 |        9 |
| 2012-11-21 23:00:44.362 |        8 |
| 2012-11-21 00:24:53.613 |       11 |

実装したい

  • のように日付に関係なく時間を分割します

      Time Division   |  Count
    

    | | 00:00:00 - 05:59:59 | 3
    | 06:00:00 - 11:59:59 | 1

    | | 12:00:00 - 17:59:59 | 4

クエリ : select date count(*) as Count from info where (date between '%00:00:00%' and '%05:59:59%' or date between '%06:00:00%' and '%11:59:59%' or date between '%12:00:00%' and '%17:59:59%') group by date.:( :(

私は、私のクエリにまったく近いわけではないことがわかりました:(私のクエリでは、これをこのフォーラムに上げています。このコンテキストに関するあらゆる種類の入力を歓迎します。

4

1 に答える 1

-1

次のことをお勧めします。

このように間隔のテーブルを定義します

CREATE TABLE IF NOT EXISTS の手順 ( namevarchar(10) NOT NULL, 初期時間 NOT NULL, 最終時間 NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

名前と時間間隔の開始と終了を入力します。

INTO steps( name, initial, final) 値 ('Int1', '00:00:00', '05:59:59'), ('int2', '06:00:00', '11:59:59') , ('int3', '12:00:00', '17:59:59'), ('int4', '18:00:00', '23:59:59');

(17:59:59 以降のイベントの最終間隔を作成しました。さらに間隔が必要な場合は、必要に応じて修正してください!...)

データ用のテーブルを作成します (次のようなもの:

CREATE TABLE IF NOT EXISTS times( timetime NOT NULL, freqint(10) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

時間データを入力します。

最後のクエリを実行します。steps.name, count(*) from steps, times where (time between steps.initial and steps.final) group by steps.name を選択します。

結果は次のようになります。

"int1","3" "int2","1" "int3","4" "int4","3"

希望が助けになります!

于 2012-11-23T10:47:30.597 に答える