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

MySQLの日付のギャップを埋める方法は?

    ヘルパーテーブルを作成し、startからのすべての日付を入力する必要があります end 、次にLEFT JOIN そのテーブルで:

    SELECT  d.dt AS date,
            COUNT(*) AS total,
            SUM(attitude = 'positive') AS positive,
            SUM(attitude = 'neutral') AS neutral,
            SUM(attitude = 'negative') AS negative
    FROM    dates d
    LEFT JOIN
            messages m
    ON      m.posted_at >= d.dt
            AND m.posted_at < d.dt + INTERVAL 1 DAYS
            AND spam = 0
            AND duplicate = 0
            AND ignore = 0
    GROUP BY
            d.dt
    ORDER BY
            d.dt
    

    基本的に、ここで必要なのはダミーの行ソースです。

    MySQL それを生成する方法を欠いている唯一の主要なシステムです。

    PostgreSQL 特殊関数generate_seriesを実装します Oracle およびSQL Server 再帰を使用できます(CONNECT BY 再帰的なCTE s、それに応じて)。



    1. SQLServer2017でビューを作成する

    2. SQLServerXML列の値をクエリするにはどうすればよいですか

    3. plpgsql変数を使用してn_distinctを設定するときにエラーが発生しました

    4. PostgreSQLがユーザーとグループをロールにマージしたのはなぜですか?