select s.s_name,s.s_gender,sum(sc.sc_grade) as sum_grade, case sum_grade when sum(sc.sc_grade)>400 then '成绩优秀' when sum(sc.sc_grade)>=300 and sum(sc.sc_grade)<=400 then '成绩良好' else '成绩一般' end as 成绩等级 from student s,score sc where s.s_no=sc.s_no and s.s_gender='f' group by s.s_name,s.s_gender ;
时间: 2024-03-24 11:35:37 浏览: 90
PMON源码分析之Start.S
5星 · 资源好评率100%
这个查询语句中,在 CASE WHEN 语句中也出现了类似的问题。正确的语法应该是使用 sum(sc.sc_grade) 作为比较的条件。正确的查询语句如下:
```
SELECT
s.s_name,
s.s_gender,
SUM(sc.sc_grade) AS sum_grade,
CASE
WHEN SUM(sc.sc_grade) > 400 THEN '成绩优秀'
WHEN SUM(sc.sc_grade) >= 300 AND SUM(sc.sc_grade) <= 400 THEN '成绩良好'
ELSE '成绩一般'
END AS 成绩等级
FROM
student s, score sc
WHERE
s.s_no = sc.s_no
AND s.s_gender = 'f'
GROUP BY
s.s_name, s.s_gender;
```
这个查询语句和之前给出的语句相同,只是将 s_id 改为了 s_no,因为我猜测 s_no 是 student 表的主键。另外,注意到 GROUP BY 子句中也需要包含 s_gender,否则查询结果可能包含男生的成绩。
阅读全文