-- 查询每天最早登录的用户及其内容喜好
SELECT  
    DATE(log_time) AS log_day,  -- 登录日期(提取日期部分)
    lt.user_id,  -- 用户ID
    hobby  -- 用户内容喜好
FROM login_tb lt
-- 关联用户信息表,获取喜好标签
JOIN user_action_tb ut ON lt.user_id = ut.user_id 
-- 筛选条件:登录时间是当天最早的登录时间
-- 子查询作用:获取每天的最早登录时间(可能有多个用户在该时间登录)
WHERE log_time IN (
    SELECT MIN(log_time)  -- 每天的最早登录时间
    FROM login_tb 
    GROUP BY DATE(log_time)  -- 按日期分组,计算每天的最早时间
)  
-- 按日期升序排序
ORDER BY log_day;

-- 查询每天最早登录的用户及其内容喜好
SELECT 
    log_day,  -- 登录日期
    u.user_id,  -- 用户ID
    hobby  -- 用户内容喜好
FROM user_action_tb u 
-- 关联子查询:获取每个用户的登录日期及登录时间排名
JOIN (
    SELECT 
        user_id, 
        DATE(log_time) AS log_day,  -- 登录日期
        -- 窗口函数:按日期分组,对登录时间排序,最早的标记为1
        DENSE_RANK() OVER(
            PARTITION BY DATE(log_time)  -- 按日期分组
            ORDER BY log_time  -- 按登录时间升序(最早的排第1)
        ) AS log_time_rank 
    FROM login_tb
) t ON u.user_id = t.user_id 
    AND t.log_time_rank = 1  -- 筛选排名为1的用户(当天最早登录)
-- 按日期升序排序
ORDER BY log_day;