-1

私は次の表を持っています

テーブル: item
フィールド: id | タイムスタンプ | 状態

id は auto inc キー
です タイムスタンプは m:d:yh:m:s です
status は 1 または 2 になります

次のようなレポートを生成する必要がありました。

Time Passed | Count of status = 1 | Count of status = 2
0-3hrs  |  2 |   9
3-6hrs  |  1 |   5
6-9hrs  |  8 |   14
0-12hrs  |  0 |   99

などなど

要約すると、レポートは各ステータス (1 または 2) を合計 3 時間のブロックにグループ化します。

私がやっていることは、php を使用してデータを操作することでかなり簡単に実行できますが、mysql クエリだけで実行できるかどうか疑問に思っています

4

3 に答える 3

0

ヒントだけ。

過ぎ去った時間を表現しようと思います:)。

したがって、次のようなものから始めますDATEDIFF(hour, timestamp, start_timestamp) / 3

式は、次の期間ごとに 0 から始まる自然数を返す必要があります。

GROUP BY次に、上記の式とCOUNT()ステータスを使用できます。

私はそれをテストするためにMySQLを手元に持っていませんが、あなたを助けることができる機能があると確信しています.

幸運を!

于 2013-06-07T17:46:32.793 に答える
0

日付を取り、DATEDIFF()CURRENT_TIMESTAMPを介して渡すことができます

DATEDIFF(hh, @date1, @date2)

時間差を返します

SQL クエリの前に宣言したSQL 関数内。

単純な while で、1 日をカバーするのに十分な時間を実行し、date_difference でグループ化し、COUNT()関数を使用してステータスをカウントします。

于 2013-06-07T17:48:42.840 に答える