sql >> データベース >  >> RDS >> Mysql

MySQLで週ごとにグループ化

    これへの2つのステップ:

    1つは、1週間の切り捨て操作が必要です。これにはDATETIMEが必要です。 アイテムを作成し、前の日曜日の深夜に返します(ビジネスルールで週が日曜日に始まると定められている場合)。

    これが適切なGROUPBYアイテムになります。 WEEK()/ YEAR()ハックはこれには適していません。毎年の最後/最初の週に本当に混乱します。

    私の経験では、この表現は、日曜日から土曜日まで、週の切り捨てのトリックを実行します。

      FROM_DAYS(TO_DAYS(TIMESTAMP) -MOD(TO_DAYS(TIMESTAMP) -1, 7))
    

    月曜日から日曜日の週を取得するには、この式を使用します。

      FROM_DAYS(TO_DAYS(TIMESTAMP) -MOD(TO_DAYS(TIMESTAMP) -2, 7))
    

    だからあなたはこれを行うことができます。

      SELECT COUNT(whatever), SUM(whatelse),
             FROM_DAYS(TO_DAYS(event_time) -MOD(TO_DAYS(event_time) -1, 7)) as WEEKSTART,
        FROM TABLE
       GROUP BY FROM_DAYS(TO_DAYS(event_time) -MOD(TO_DAYS(event_time) -1, 7))
    

    MySQLで週ごとにグループ化する方法>

    次に、切り捨てられた日付に6日を追加して、各週の最終日と初日を表示できるようにする必要があります。

    これは、ネストされたクエリを使用してこれを行うための良い方法です

    SELECT whats, elses, weekstart, weekstart + INTERVAL 6 DAY AS weekend
      FROM (
      SELECT COUNT(whatever) AS whats, SUM(whatelse) AS elses,
             FROM_DAYS(TO_DAYS(event_time) -MOD(TO_DAYS(event_time) -1, 7)) AS weekstart,
        FROM TABLE
       GROUP BY FROM_DAYS(TO_DAYS(event_time) -MOD(TO_DAYS(event_time) -1, 7))
      ) AS summary
    ORDER BY weekstart
    

    これをたくさんやっていますか?保存されたTRUNC_WEEKを作成することをお勧めします 機能。




    1. 理解しようとしています列リストエラーに一致するフルテキストインデックスが見つかりません

    2. LaravelUnixソケットを備えたMAMP

    3. 行、ページ、テーブルのロックとは何ですか?そして、それらが取得されたとき?

    4. 10進数(s、p)または数値(s、p)?