WITH t1 AS (
    SELECT user_id,
           course_id,
           TIME(in_datetime),
           out_datetime
    FROM attend_tb
    WHERE TIME(in_datetime) <= '19:00:00'
          AND  '19:00:00' <= TIME(out_datetime)
),
t2 AS (
    SELECT a.course_id,
           a.course_name,
           count(distinct user_id) AS online_num
    FROM course_tb a
             LEFT JOIN t1
                       ON a.course_id = t1.course_id
    GROUP BY a.course_id, a.course_name
    ORDER BY course_id ASC
)
SELECT * FROM t2;
           TIME(in_datetime),
           out_datetime
    FROM attend_tb
    WHERE TIME(in_datetime) <= '19:00:00'
          AND  '19:00:00' <= TIME(out_datetime)
),
t2 AS (
    SELECT a.course_id,
           a.course_name,
           count(distinct user_id) AS online_num
    FROM course_tb a
             LEFT JOIN t1
                       ON a.course_id = t1.course_id
    GROUP BY a.course_id, a.course_name
    ORDER BY course_id ASC
)
SELECT * FROM t2;
            user_id,
            course_id,
            TIME(in_datetime),
            out_datetime
        FROM
            attend_tb
        WHERE
            TIME(in_datetime) <= '19:00:00'
            AND '19:00:00' <= TIME(out_datetime)
    ),
    t2 AS (
        SELECT
            a.course_id,
            a.course_name,
            count(distinct user_id) AS online_num
        FROM
            course_tb a
            LEFT JOIN t1 ON a.course_id = t1.course_id
        GROUP BY
            a.course_id,
            a.course_name
        ORDER BY
            course_id ASC
    )
SELECT
    *
FROM
    t2;

# 判断逻辑需要主意:where 需要分段判断时,需要用 and 进行连接 !