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

1か月の毎日の値を取得する方法

    これは、SQLで実際に行うのは驚くほど困難です。これを行う1つの方法は、UNION ALLを使用して長いselectステートメントを使用して、1から31までの数値を生成することです。これは原則を示していますが、わかりやすくするために4で停止しました。

    SELECT MonthDate.Date, COALESCE(SUM(`values`), 0) AS Total
    FROM (
        SELECT 1 AS Date UNION ALL
        SELECT 2 UNION ALL
        SELECT 3 UNION ALL
        SELECT 4 UNION ALL
        --
        SELECT 28 UNION ALL
        SELECT 29 UNION ALL
        SELECT 30 UNION ALL
        SELECT 31) AS MonthDate
    LEFT JOIN Table1 AS T1
    ON MonthDate.Date = DAY(T1.Date)
    AND MONTH(T1.Date) = 1 AND YEAR(T1.Date) = 2010
    WHERE MonthDate.Date <= DAY(LAST_DAY('2010-01-01'))
    GROUP BY MonthDate.Date
    

    テーブルを使用してこれらの値を格納し、代わりに結合する方がよい場合があります。

    結果:

    1, 34
    2, 10
    3, 0
    4, 7
    


    1. select * from table vs select colA、colB、etc. from table Interesting Behavior in SQL Server 2005

    2. マージ更新オラクルは、安定した行のセットを取得できません

    3. OracleのTZ_OFFSET()関数

    4. Laravel Eloquent with()->nullを返す