4

重複の可能性:
レコードを時間別にグループ化する

Web ページ要求をログに記録する mysql テーブルがあります。

1 時間あたりのリクエスト数を出力する SQL を書きたいと思います。

INPUT:
timestamp              browser
-------------------    -------
2012-06-28 15:06:14    chrome
2012-06-28 15:12:15    IE6
2012-06-28 16:32:16    IE7

OUTPUT:
timestamp              count
-------------------    -------
2012-06-28 15:00:00    2
2012-06-28 16:00:00    1

私の最初のステップは、日時フィールドを「切り捨て」て、グループ化できるようにすることだと思います。検索すると、時間を丸める例がいくつか見つかりましたが、切り捨てるものはありません。

4

4 に答える 4

5
select count(no_of_requests) from table group by date(datetime_field) , hour(datetime_field)
于 2012-06-28T13:55:54.153 に答える
4

で日付をフォーマットしてみてください

DATE_FORMAT(timestamp, '%Y-%m-%d %H') as formatted_timestamp

次に、そのformatted_timestampでグループ化します

于 2012-06-28T13:57:29.863 に答える
3

ts_tableテーブル名とtsタイムスタンプ列名を 仮定すると、

mysql> select
    ->     addtime( date_format( ts, '%Y-%m-%d %H' ), '00:00:00' ) as 'during'
    ->     , count( date_format( ts, '%Y-%m-%d %H' ) ) as 'visit_count'
    -> from ts_table
    -> group by 'during'
    -> ;
+---------------------+-------------+
| during              | visit_count |
+---------------------+-------------+
| 2012-06-28 15:00:00 |           2 |
| 2012-06-28 16:00:00 |           1 |
+---------------------+-------------+
2 rows in set (0.00 sec)
于 2012-06-28T14:49:05.760 に答える
1

出力を取得するには、DATE() および HOUR() 関数でグループ化できるはずです。

于 2012-06-28T13:56:56.733 に答える