create procedure Pro_QCname_Chour_xkrs_AverScore_MaxScore @Tname_in char(20),@Cname_in char(30), @Chour_out tinyint output,@xkrs_out int output, @Aver_Score tinyint output,@Max_Score tinyint output as declare @Sum_Score int select @Chour_out=Chour,@xkrs_out=count(Sno),@Sum_Score=sum(Score),@Max_Score=max(Score) from SC,Course,Teacher,TC where Course.Cno=SC.Cno and Teacher.Tno=TC.Tno and Course.Cno=TC.Cno group by SC.Cno having Tname=@Tname_in and Cname=@Cname_in select @Aver_Score=@Sum_Score/@xkrs_out go,选择列表中的列 'Course.Chour' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
时间: 2024-02-13 08:05:50 浏览: 144
这个错误是因为在查询语句中没有将所有非聚合列包含在 GROUP BY 子句中。在这个例子中,Course.Chour 列没有被包含在 GROUP BY 子句中,所以会报错。你需要在查询语句中将所有非聚合列包含在 GROUP BY 子句中,例如:
```
select Course.Chour, count(SC.Sno) as xkrs, avg(SC.Score) as Aver_Score, max(SC.Score) as Max_Score
from SC,Course,Teacher,TC
where Course.Cno=SC.Cno and Teacher.Tno=TC.Tno and Course.Cno=TC.Cno
group by Course.Chour, Course.Cname, Teacher.Tname
having Teacher.Tname=@Tname_in and Course.Cname=@Cname_in
```
这个查询语句将 Course.Chour 列包含在了 GROUP BY 子句中,同时也包含了其他需要聚合的列。
相关问题
SELECT a.username, a.userid, a.orgname, a.orgnamehr orgnameHr, a.company company, a.idcard, sum(CASE a.hour_type WHEN 'A' THEN a.allot_hour ELSE 0 END ) aHour, sum(CASE a.hour_type WHEN 'B' THEN a.allot_hour ELSE 0 END ) bHour, sum(CASE a.hour_type WHEN 'C' THEN a.allot_hour ELSE 0 END ) cHour, sum(CASE a.hour_type WHEN 'D' THEN a.allot_hour ELSE 0 END ) dHour, sum(CASE a.hour_type WHEN 'E' THEN a.allot_hour ELSE 0 END ) eHour, sum(CASE a.hour_type WHEN 'F' THEN a.allot_hour ELSE 0 END ) fHour, sum(CASE WHEN a.hour_type IN ('A','B','C','D','E','F') THEN a.allot_hour ELSE 0 END ) countHour, CASE yearMonth WHEN CONVERT(varchar(10), d.break_sure_date, 23) >= CONVERT(varchar(10),'2023-06-06', 23) and CONVERT(varchar(10), d.break_sure_date, 23) < CONVERT(varchar(10),'2023-07-06', 23) THEN '1' ELSE '2' END FROM ems_hour_allot a
这是一个SQL查询语句,用于从`ems_hour_allot`表中检索数据。查询结果将包括以下列:`username`、`userid`、`orgname`、`orgnameHr`、`company`、`idcard`、`aHour`、`bHour`、`cHour`、`dHour`、`eHour`、`fHour`、`countHour`和`yearMonth`。
该查询使用了多个聚合函数和条件语句。对于每个用户,它计算了不同类型的小时数的总和,并将其存储在相应的列中。最后,它根据给定条件对`yearMonth`进行分类,并返回结果。
请注意,查询中的日期条件是固定的,如果需要根据特定日期进行查询,请相应地修改条件。
数据库 t查询课表(course)的所有记录返回数据,要求1.分回自段名称使用别称2.返回课程名称(CName)3.返回总课时(CHour)4.返回时间,上完课程的均课时
你可以通过编写SQL查询来获取满足条件的数据。假设你的数据库结构中存在一个名为`courses`的表,它有字段`CourseID`(课程ID)、`CName`(课程名称)、`CHour`(总课时)以及`Semester`(学期)。为了按要求处理,我们可以使用`CASE`语句对学期别名进行处理,并计算平均课时。以下是示例查询:
```sql
SELECT
CASE
WHEN Semester = '春季' THEN '春季学期'
WHEN Semester = '夏季' THEN '夏季学期'
WHEN Semester = '秋季' THEN '秋季学期'
ELSE '未知学期'
END AS 学期别称,
CName AS 课程名称,
CHour AS 总课时,
AVG(CHour) OVER (PARTITION BY CourseID) AS 平均课时
FROM
courses;
```
这个查询将返回每个课程的名称、总课时,以及每个课程上完后的平均课时(基于每门课程的记录)。如果学期字段值不在预设的春季、夏季和秋季,将会显示为“未知学期”。
阅读全文