题解 | #计算用户8月每天的练题数量#
计算用户8月每天的练题数量
https://www.nowcoder.com/practice/847373e2fe8d47b4a2c294bdb5bda8b6
SELECT RIGHT(date, 2) day, COUNT(*) question_cnt FROM question_practice_detail GROUP BY date HAVING date >= '2021-08-01' AND date <= '2021-08-31';
1.理解题意:目标是要得出用户做题的数量,没有指定用户和题目,所以不需要去重,可以根据题目id或者整条记录。同时还是每天,这就告诉我们要使用分组函数,以一天为基本单位。还有八月,这个是过滤条件,使用分组对应的having子句,或者在分组前使用where
2.做题:将以上理解形式化,根据示例,可以看到日期只保留日,所以使用文本切分函数。同时用整条记录计算做过的题目数。以日期为分组条件,同时只保留在八月的。