2 个解决方案
#1
每个学生只有五门科目,这个条件可以很大程度上简化查询
select 学号 from 表 group by 学号
having sum(case when 成绩>90 then 10 when 成绩>=80 and 成绩<=90 then 1 else 0 end)=41
select 学号 from 表 group by 学号
having sum(case when 成绩>90 then 10 when 成绩>=80 and 成绩<=90 then 1 else 0 end)=41
#2
SELECT 学号
FROM 表名 WHERE
(CASE WHEN 科目=1 AND 成绩 >= 90 THEN 2 WHEN 科目=1 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=2 AND 成绩 >= 90 THEN 2 WHEN 科目=2 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=3 AND 成绩 >= 90 THEN 2 WHEN 科目=3 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=4 AND 成绩 >= 90 THEN 2 WHEN 科目=4 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=5 AND 成绩 >= 90 THEN 2 WHEN 科目=5 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) = 9
GROUP BY 学号
FROM 表名 WHERE
(CASE WHEN 科目=1 AND 成绩 >= 90 THEN 2 WHEN 科目=1 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=2 AND 成绩 >= 90 THEN 2 WHEN 科目=2 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=3 AND 成绩 >= 90 THEN 2 WHEN 科目=3 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=4 AND 成绩 >= 90 THEN 2 WHEN 科目=4 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=5 AND 成绩 >= 90 THEN 2 WHEN 科目=5 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) = 9
GROUP BY 学号
#1
每个学生只有五门科目,这个条件可以很大程度上简化查询
select 学号 from 表 group by 学号
having sum(case when 成绩>90 then 10 when 成绩>=80 and 成绩<=90 then 1 else 0 end)=41
select 学号 from 表 group by 学号
having sum(case when 成绩>90 then 10 when 成绩>=80 and 成绩<=90 then 1 else 0 end)=41
#2
SELECT 学号
FROM 表名 WHERE
(CASE WHEN 科目=1 AND 成绩 >= 90 THEN 2 WHEN 科目=1 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=2 AND 成绩 >= 90 THEN 2 WHEN 科目=2 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=3 AND 成绩 >= 90 THEN 2 WHEN 科目=3 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=4 AND 成绩 >= 90 THEN 2 WHEN 科目=4 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=5 AND 成绩 >= 90 THEN 2 WHEN 科目=5 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) = 9
GROUP BY 学号
FROM 表名 WHERE
(CASE WHEN 科目=1 AND 成绩 >= 90 THEN 2 WHEN 科目=1 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=2 AND 成绩 >= 90 THEN 2 WHEN 科目=2 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=3 AND 成绩 >= 90 THEN 2 WHEN 科目=3 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=4 AND 成绩 >= 90 THEN 2 WHEN 科目=4 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) +
(CASE WHEN 科目=5 AND 成绩 >= 90 THEN 2 WHEN 科目=5 AND 成绩 < 90 AND 成绩 >= 80 THEN 1 ELSE 0 END) = 9
GROUP BY 学号