MySQL でデータを週ごとにグループ化する
MySQL でタイムスタンプ値を操作する場合、同様にデータを週ごとにグループ化する必要が生じることがあります。 Oracle の TRUNC(timestamp,'DY') 関数に。ただし、MySQL では、この機能を実現するには別のアプローチが必要です。
YEAR() 関数と WEEK() 関数の使用
MySQL は、YEAR() 関数と WEEK() 関数を提供します。を組み合わせて使用すると、データを週ごとにグループ化できます。これらの関数を SELECT 句と GROUP BY 句の両方で組み合わせることで、次のような目的の結果を得ることができます。
SELECT YEAR(timestamp), WEEK(timestamp), etc... FROM ... WHERE .. GROUP BY YEAR(timestamp), WEEK(timestamp)
このメソッドは、特に洗練されているわけではありませんが、機能します。さらに、これらの関数を組み合わせて 1 つの式を作成できます。
SELECT CONCAT(YEAR(timestamp), '/', WEEK(timestamp)), etc... FROM ... WHERE .. GROUP BY CONCAT(YEAR(timestamp), '/', WEEK(timestamp))
YEARWEEK() 関数
もう 1 つのオプションは、YEARWEEK() 関数を使用することです。年と週番号を組み合わせた値を返します:
SELECT YEARWEEK(mysqldatefield), etc... FROM ... WHERE .. GROUP BY YEARWEEK(mysqldatefield)
この関数は、
週を跨ぐ
年の初めをまたぐ週の取り扱いを考慮することが重要です。 YEAR() / WEEK() アプローチでは、集計されたデータが 2 つに分割される可能性があります。1 つは前の年、もう 1 つは新しい年です。このような場合、オプションのモード引数を 0 または 2 に設定した YEARWEEK() 関数を使用すると、またがる問題に関係なく、集計されたデータに完全な週が確実に含まれるようになります。
以上がMySQL でデータを週ごとに効率的にグループ化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。