题解 | #每月及截止当月的答题情况#
每月及截止当月的答题情况
https://www.nowcoder.com/practice/1ce93d5cec5c4243930fc5e8efaaca1e
思考
很有意思的一道题目,本身不难,无非是窗口函数的使用,但有一点很巧妙,即每月的新增用户,一开始一直在思索这个应该怎么用SQL语言表示,看到高赞的大佬才知道:将首次出现(即start_time = min(start_time))的用户mark为1,非首次出现的标记为0,之后在汇总时sum求和即为每月新增用户,学习到了
SELECT month, COUNT(DISTINCT uid), SUM(judge) month_add_uv , MAX(SUM(judge)) OVER(order by month) , SUM(SUM(judge)) OVER(order by month) FROM (SELECT uid, date_format(start_time, '%Y%m') month , IF(start_time = MIN(start_time) OVER(partition by uid), 1, 0) judge FROM exam_record) t1 GROUP BY month