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

JOINクエリを使用してレコードを取得する

    特定の曜日名にレコードがないため、得られる結果は正しいです。すべての曜日名を取得する必要があるため、1日の完全なセットを投影する必要があります(サブクエリ内でUNIONを使用 )そして既存のクエリと結合します。

    SELECT  a.day_name,
            COALESCE(b.totalCount, 0) totalCount
    FROM
            (
                SELECT 'Sunday' day_name, 1 ordby UNION ALL
                SELECT 'Monday' day_name, 2 ordby UNION ALL
                SELECT 'Tuesday' day_name, 3 ordby UNION ALL
                SELECT 'Wednesday' day_name, 4 ordby UNION ALL
                SELECT 'Thursday' day_name, 5 ordby UNION ALL
                SELECT 'Friday' day_name, 6 ordby UNION ALL
                SELECT 'Saturday' day_name, 7 ordby 
            ) a
            LEFT JOIN
            (
                SELECT  DAYNAME(timestamp) day_name, 
                        COUNT(*) totalCount
                FROM    `emp_info` 
                WHERE   DATE(timestamp ) > DATE_SUB(CURDATE( ) , INTERVAL 1 WEEK ) 
                GROUP   BY DAYNAME(timestamp)
            ) b ON a.day_name = b.day_name
    ORDER   BY a.ordby
    



    1. SQLServerで文字列の左または右から特定の数の文字を選択する方法

    2. MYSQLで2番目の最大日付を取得する方法

    3. RHEL、Rocky、AlmaLinuxでMySQLレプリケーションを設定する方法

    4. Oracle複数の列を1つに結合