数据库的如下数据表 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

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注