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

週ごとにグループ化して、空の週を取得する方法は?

    SQLは、一部のテーブルに存在しない行を返すことはできません。必要な効果を得るには、1年の可能な週ごとに1行のテーブルWeeks(WeekNo INT)が必要です(IIRCは、カウント方法に応じて、53週または54週のいずれかになります)。

    次に、このテーブルをOUTER JOINで通常の結果に結合して、追加の週を追加します。

    SELECT DATE_FORMAT(date, 'Y:%X - Week:%V') AS regweek, COUNT(date) as number 
        FROM YourTable RIGHT OUTER JOIN Weeks ON WEEK(YourTable.date) = Weeks.WeekNo
    

    [更新]:COUNT(*)ではなくCOUNT(date)のユーザーに注意してください。 SQLは、COUNTを合計するときに、日付列にNULL値を含めません。欠落している週には日付が含まれないため、これらの週のイベントは正しく0になります。



    1. 関数を使用して2つの日付の間の日付のリストを取得します

    2. 既存のデータベースを中心にフラスコアプリケーションを構築するにはどうすればよいですか?

    3. 同じアクセス方法でデッドロックが発生する可能性はありますか?

    4. NULLの場合、MAX関数で0を設定するにはどうすればよいですか?