SQL> select s.s_name,s.s_gender,sum(sc.sc_grade) sum_grade, 2 case sum_grade 3 when sum_grade>400 then '成绩优秀' 4 when sum_grade>=300 and sum_grade<=400 then '成绩良好' 5 else '成绩一般' 6 end as 成绩等级 7 from student s,score sc 8 group by s.s_name,s.s_gender 9 having s.s_gender='f'; when sum_grade>400 then '成绩优秀' * 第 3 行出现错误: ORA-00905: 缺失关键字
时间: 2024-03-23 13:44:08 浏览: 52
这个错误是因为在 CASE WHEN 语句中,不能直接使用别名,需要使用原始的聚合函数。你可以将这个查询语句稍作修改,如下所示:
```
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_id = sc.s_id
AND s.s_gender = 'f'
GROUP BY
s.s_name, s.s_gender;
```
这个查询语句会返回每个女生的姓名、性别、总成绩以及对应的成绩等级。注意,我添加了一个 WHERE 子句来确保只查询女生的成绩。同时,使用了 GROUP BY 子句来按照姓名和性别进行分组,以便计算每个女生的总成绩。
阅读全文