题解 | #小破站9月新会员人数#

小破站9月新会员人数

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

子查询去重出九月一号前的用户,使用a not in b的逻辑判断九月的新会员 解法1

重点1: count distinct统计 重点2: not in 子查询

SELECT 
    COUNT(DISTINCT user_id) AS new_cnt
FROM 
    detail_list_tb
WHERE 
    begin_date BETWEEN '2021-9-1' AND '2021-9-30'
	AND user_id NOT IN 
    (
		SELECT 
            DISTINCT user_id
		FROM 
            detail_list_tb
		WHERE 
            begin_date < '2021-9-1'
	);

解法2

重点1: 左连接 left join的使用 重点2: 子查询,中去重连接

SELECT
    COUNT(a.user_id)
FROM
(
    -- 九月的会员
    SELECT 
        DISTINCT user_id
    FROM 
        detail_list_tb
    WHERE 
        begin_date BETWEEN '2021-9-1' AND '2021-9-30'
) a
LEFT JOIN
(
    -- 旧会员
    SELECT 
        DISTINCT user_id
    FROM 
        detail_list_tb
    WHERE 
        begin_date < '2021-9-1'
) b
-- 九月的会员与旧会员相连,且九月的会员id不在旧会员记录中的即为新会员
ON a.user_id = b.user_id AND b.user_id IS NULL
全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
缒梦&独舞:这家公司是这样的,去年给我实习offer了,不过也是面着玩儿的,他周六还要去做公益志愿活动
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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