WITH daily_earliest AS (
    SELECT 
        DATE(log_time) AS log_day,
        user_id,
        log_time,
        RANK() OVER (PARTITION BY DATE(log_time) ORDER BY log_time) as rank_num
    FROM login_tb
)
SELECT 
    d.log_day,
    d.user_id,
    u.hobby
FROM daily_earliest d
JOIN user_action_tb u ON d.user_id = u.user_id
WHERE d.rank_num = 1
ORDER BY d.log_day;