数据库的如下数据表 scores 记录用户得分历史,uid(int) 表示用户 ID,score(int) 表示分数,date(date) 表示日期,每个用户每天会产生多条数据 (示例:uid 3, date 2017-03-17)
现在需要一份用户列表,这些用户在 2017 年 3 月份的 31 天中,至少要有 16 天, 每天得分总和大于 40 分。用一条 SQL 语句表示。
select uid,count(1) from ( select date,uid,sum(score) sum from scores where substr(date,1,7)='2017-03' group by date,uid having sum(score)>40 ) cc group by uid having count(1) >=16