重点1:针对业务逻辑理解打标签 重点2:全连接 重点3:sum over partition by order by窗口函数句法的使用
SELECT
-- 5.对和求最大背包,即最大num
MAX(num) AS max_num
FROM
(
SELECT
user_id,
-- 4.开窗,用户为分区键,时间为排序键位求和
SUM(flag) OVER(PARTITION BY user_id ORDER BY tms ASC) AS num
FROM
-- 3.用户是否有效的所有合集
(
-- 1.flag为1标记为生效
SELECT
user_id,
begin_date AS tms,
1 AS flag
FROM
detail_list_tb
UNION ALL
-- 2.flag为-1标记为不生效
SELECT
user_id,
end_date AS tms,
-1 AS flag
FROM
detail_list_tb
)a
)b;