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 08:44:08 浏览: 16
这个错误是因为在 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 子句来按照姓名和性别进行分组,以便计算每个女生的总成绩。
相关问题

SELECT s.*, s_score FROM student s JOIN score sc1 ON s.s_id = sc1.s_id AND s.s_class=1 JOIN score sc2 ON s.s_id = sc2.s_id AND s.s_class=2 WHERE sc1.s_score > sc2.s_score;

这是一个 SQL 查询语句,它的作用是查询出在同一学校中,既在1班又在2班的学生中,语文成绩比数学成绩高的学生信息以及他们的语文成绩。其中,student 表记录学生信息,包括学生编号(s_id)、姓名(s_name)和班级(s_class)等字段;score 表记录学生成绩信息,包括学生编号(s_id)、科目名称(c_name)和成绩(s_score)等字段。

select s.s_id,s_name,avg(sc2.s_score) from student s join (select sc1.s_id,count(sc1.s_id) cc from score sc1 where sc1.s_score<60 group by sc1.s_id having cc>=2) t on s.s_id =t.s_id join score sc2 on s.s_id =sc2.s_id; 报SQL 错误 [10025] [42000]: Error while compiling statement: FAILED: SemanticException [Error 10025]: Line 1:7 Expression not in GROUP BY key 's_id'帮我修改一下

根据错误信息,查询语句中的表达式 's_id' 不在 GROUP BY key 中,因此需要将其添加到 GROUP BY 子句中。下面是修改后的 SQL 查询语句: ``` SELECT s.s_id, s.s_name, AVG(sc2.s_score) FROM student s JOIN ( SELECT sc1.s_id, COUNT(sc1.s_id) cc FROM score sc1 WHERE sc1.s_score < 60 GROUP BY sc1.s_id HAVING cc >= 2 ) t ON s.s_id = t.s_id JOIN score sc2 ON s.s_id = sc2.s_id GROUP BY s.s_id, s.s_name; ``` 修改后,查询语句会按照 s_id 和 s_name 进行分组,从而解决了错误信息中提到的问题。

相关推荐

改如何修正: <select id="getCurrentTask" resultType="com.sottop.sokonmobile.sokonmobile.qingdao.entity.AsEmWorkOrderEntity"> SELECT asewo.code_s as code,asewo.order_type_s as orderType,asewo.equipment_name_s as equipmentName,asewo.executor_s as executor, asewo.plan_start_time_T as planStartTime,asewo.plan_finish_time_T as planFinishTime,asewo.tpm_key_s as tpmKey,asewo.shop_s as shop, asewo.line_S as line,asewo.actual_start_time_t as startTime,asewo.actual_finish_time_t as finishTime,asewo.executor_account_s as executorAccounts, asewo.source_type_s as sourceType,asewo.SOURCE_ORDER_S as sourceOrder,asewo.CREATION_TIME as creationTime FROM AT_AS_EM_Work_Order asewo WHERE to_char(asewo.plan_start_time_T,'yyyy_mm-dd hh24:mi') <= to_char(plan_finish_time_T,'yyyy_mm_dd hh24:mi') AND asewo.ORDER_STATUS_S='创建' AND asewo.executor_s=#{executor} <if test="orderType!=null and orderType!=''"> AND asewo.order_type_s=#{orderType} </if> ORDER BY asewo.creation_time DESC Union All SELECT asewo.code_s as code,asewo.order_type_s as orderType,asewo.equipment_name_s as equipmentName,asewo.executor_s as executor, asewo.plan_start_time_T as planStartTime,asewo.plan_finish_time_T as planFinishTime,asewo.tpm_key_s as tpmKey,asewo.shop_s as shop, asewo.line_S as line,asewo.actual_start_time_t as startTime,asewo.actual_finish_time_t as finishTime,asewo.executor_account_s as executorAccounts, asewo.source_type_s as sourceType,asewo.SOURCE_ORDER_S as sourceOrder,asewo.CREATION_TIME as creationTime FROM AT_AS_EM_Work_Order asewo WHERE asewo.ORDER_STATUS_S='创建' AND asewo.executor_s=#{executor} <if test="orderType!=null and orderType!=''"> AND asewo.order_type_s=#{orderType} </if> ORDER BY asewo.creation_time DESC </select>

最新推荐

recommend-type

SQL Server阻止了对组件xp_cmdshell过程的解决方案.docx

SQL Server阻止了对组件xp_cmdshell过程的解决方案。 错误描述:SQL Server阻止了对组件‘xp_cmdshell’的过程‘sys.xp_cmdshell’的访问。因为此组件已作为此服务嚣安全配置的一部分而被关闭。系统管理员可以通过...
recommend-type

MySQL复制出错 Last_SQL_Errno:1146的解决方法

主要介绍了MySQL复制出错 Last_SQL_Errno:1146的解决方法,需要的朋友可以参考下
recommend-type

SQLServer中Partition By及row_number 函数使用详解

partition by关键字是分析性函数的一部分,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,本文给大家介绍SQLServer中Partition By及row_number 函数使用详解,需要的朋友参考下
recommend-type

SQL_数据库图书管理系统.docx

SQL_数据库图书管理系统,WORD文档较为规范,流程清楚,适合借鉴,0积分即可下载。
recommend-type

SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别.doc

SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE Score &gt;= '+CAST(@Score AS NVARCHAR(10)) EXEC &#40;@sql&#41;; 执行结果: 注意:在执行拼接SQL 语句的时候,的EXEC括号中只允许包含一个字符串...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

解释这行代码 c = ((double)rand() / RAND_MAX) * (a + b - fabs(a - b)) + fabs(a - b);

这行代码是用于生成 a 和 b 之间的随机数。首先,它使用 rand() 函数生成一个 [0,1) 之间的随机小数,然后将这个小数乘以 a、b 范围内的差值,再加上 a 和 b 中的较小值。这可以确保生成的随机数大于等于 a,小于等于 b,而且不会因为 a 和 b 之间的差距过大而导致难以生成足够多的随机数。最后,使用 fabs() 函数来确保计算结果是正数。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。