ホームページ > データベース > mysql チュートリアル > GROUP BY 句を使用して特定の時間間隔で MySQL の時間ベースのデータを集計するにはどうすればよいですか?

GROUP BY 句を使用して特定の時間間隔で MySQL の時間ベースのデータを集計するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-04 08:58:35
オリジナル
525 人が閲覧しました

How can I aggregate time-based data in MySQL using the GROUP BY clause for specific time intervals?

時間ベースのデータの集計

MySQL の GROUP BY 句を使用すると、特定の間隔または時間セグメントにわたるデータを集計できます。これは、タイムスタンプ付きのデータを扱う場合に特に便利で、目的の時間範囲にわたるデータを効果的に要約して分析できるようになります。

これを実現するには、MySQL が日付と時刻を表すために Unix タイムスタンプを使用するという事実を利用できます。内部的に。 Unix タイムスタンプを希望の間隔 (10 秒や 30 秒など) で分割することで、データを特定の時間セグメントにグループ化できます。

GROUP BY を使用して「時間セグメント」でグループ化するための構文は次のとおりです。

GROUP BY UNIX_TIMESTAMP(time_stamp) DIV <interval>
ログイン後にコピー

ここで 目的の時間セグメントを秒単位で指定します。例:

10 秒間隔:

GROUP BY UNIX_TIMESTAMP(time_stamp) DIV 10
ログイン後にコピー

30 秒間隔:

GROUP BY UNIX_TIMESTAMP(time_stamp) DIV 30
ログイン後にコピー

このアプローチを使用すると、これらの特定の時間セグメント内のデータを簡単に集計できます。各セグメントの count 列の合計を計算するには、次のクエリを使用できます。

SELECT
  UNIX_TIMESTAMP(time_stamp) DIV <interval> AS time_segment,
  SUM(count) AS total_count
FROM table_name
GROUP BY time_segment
ログイン後にコピー

たとえば、10 秒間隔のカウント値の合計を取得するには、次のクエリを使用します。

SELECT
  UNIX_TIMESTAMP(time_stamp) DIV 10 AS time_segment,
  SUM(count) AS total_count
FROM table_name
GROUP BY time_segment
ログイン後にコピー

これにより、指定した目的の結果と同様の出力が生成されます。

time_segment total_count
2010-06-15 23:35:00 1
2010-06-15 23:35:30 7544
2010-06-17 10:39:35 450

次の点に注意することが重要です。 time_segment の結果は Unix タイムスタンプであり、各セグメントの開始を表します。 「2010-06-15 23:35:00 ~ 2010-06-15 23:35:30」など、より使いやすい形式で時間セグメントを表示するには、クエリで追加の文字列形式を使用できます。

の値を調整することで、したがって、時間ベースのデータを任意の時間セグメントにグループ化および集計して、特定の期間のデータを効果的に分析できます。

以上がGROUP BY 句を使用して特定の時間間隔で MySQL の時間ベースのデータを集計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート