题解 | #小破站大会员最多同时有多少#

小破站大会员最多同时有多少

http://www.nowcoder.com/practice/a9309792ebbd4f8ca1b37988366a8dae

重点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;
全部评论
大佬SUM(tag)应该是SUM(flag)
点赞 回复 分享
发布于 2021-10-20 00:21
很详细,学习了
点赞 回复 分享
发布于 2021-10-20 00:17

相关推荐

11-19 18:44
已编辑
成都理工大学 Java
程序员花海:我面试过100+校招生,大厂后端面试不看ACM,竞赛经历含金量低于你有几份大厂实习 这个简历整体来看不错 可以海投
如何写一份好简历
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务