查询选修两门以上课程的学生的平均成绩
1. 排错SQL:列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
因为你按照s.sname分了组并且用了聚集函数avg(sc.scgrade),就必须用group by按照s.sname分组才行啊,如果select中没专有s.sname,只有聚集函数avg(sc.scgrade)的话肯定属就是对的,但是不符合你题目的要求了。下面这个就是对的了,因为除了聚集函数的选择项都被分组了,在上面那个后面加上group by s.sname应该就对了,不过不知道sname是不是唯一键。
唉,也不知道自己说清楚没,不清楚的可以发信问我。
2. SQL查询出平均分大于80分,且至少两门课大于90的学生。
select a.* from stu a,study b,(select a.Sno Sno,count(b.Grade) shuliang from stu a,study b where a.Sno=b.Sno and b.Grade>=90 group by a.Sno)t
where a.Sno=b.Sno and a.Sno=t.Sno and t.shuliang>=2
group by a.Sno,a.Sname,a.Sex,a.Age,a.Native
having avg(b.Grade)>=80
3. SQL 2005 检索没有选修c1课程且选修课程数为两门的学生的姓名和平均成绩并按平均成绩降序排列。
Select a.sn as 姓名,avg(c.gr) as 平均成绩
From s a,c b,sc c
where a.s#=c.s#
and b.c#=c.c#
and b.cn!='c1'
group by a.sn
having count(*)=2
order by avg(c.gr) desc
4. 查询所有至少选修2门课程的学生的学号的语句怎么写
select sno(学生的学号) from sc(学生选课表)
group by sno having count(*)>1
5. SQL求选修课程在两门以上并且都及格的学生号及总平均分
我只会oracle的写法,其他数据库可能会有所区别,请注意。而且就算这种写法,因为专无法实验可能也有些出入,应属该需要调试
select 学生号,avg(分数) from table where 分数>=60 group by 学生号 having count(*)>1
分数>60保证及格,这里首先查询的是及格的学生,及格的学生如果count(*)>1,那么他的选课一定是两门或者两门以上(我假定的选课表是一个学生一个课程一行)。不过这里有一个问题,假设一个学生选了三门课程,两门及格一门不及格,那么是不是需要统计,按照你的需求
“两门以上并且都及格”,现在这个语句好像与你的要求不是那么符合。
所以还有一个版本
select table.学生号,avg(table.分数) 平均分 from table,(select 学生号,count(*) 选课数 from table group by 学生号 having 选课数>1)a where table.分数>60 group by 学生号 having table.学生号=a.学生号 and a.选课数=count(*)
6. 用T-sql语句写出 查询出平均分大于80分,且至少两门课大于80的学生。 表如下:
SELECT id,
SUM(CASE WHEN major = '数学' THEN score ELSE 0 END) ,
SUM(CASE WHEN major = '外语' THEN score ELSE 0 END) ,
SUM(CASE WHEN major = '语文版' THEN score ELSE 0 END) ,
AVG(score)
FROM student
WHERE student.id IN (SELECT id FROM student GROUP BY id HAVING SUM(CASE WHEN score > 80 THEN 1 ELSE 0 END) >= 2)
GROUP BY id HAVING AVG(score) > 80
即可权
7. 查询至少选修了2门课程的每个学生的平均成绩用数据库语句怎么写
比如选修课表2列: 学号, 选修课程 select 学号,count(选修课程) from 选修课 having count(选修课程) >= 2 group by 学号
8. sql 语言查询 查询出有两门不及格的学生信息。 查询各个班级的各门课程的平均分
1、查询出有两门不及格的学生信息:
create table student(
sno int not null primary key,
sname varchar(10)
)
create table center(
cno int not null primary key,
cname varchar(10)
)
create table sgrade(
sno int ,
cno int ,
sgrade int
)
2、查询各个班级的各门课程的平均分:
select sno, avg(sgrade) avgs
from sgrade
group by sno
(8)查询选修两门以上课程的学生的平均成绩扩展阅读:
用Where子句配合score<60的条件,筛选出所有不及格的人和其不及格的课程。
where是数据库中的一个指令,一般用于规定选择的标准。SELECT列名称FROM表名称WHERE列运算符值。
对于学生的不及格信息可以使用COUNT函数,用于Excel中对给定数据集合或者单元格区域中数据的个数进行计数,其语法结构为COUNT(value1,value2, ...)。COUNT函数只能对数字数据进行统计。
9. SQL一个查询中包含两个聚集函数怎么弄啊例如,查询每名学生的选课门数和平均成绩怎么弄啊
SELECT
Student.Sname,
COUNT(distinct Course.Cno) AS 选课门数,
AVG(Sc.Grade) AS 平均成绩
FROM
SC
JOIN Student ON (SC.Sno = Student.Sno)
JOIN Course ON (SC.Cno = Course.Cno)
GROUP BY
Student.Sname
Sname 选课门数 平均成绩
---------- ----------- -----------
李勇 3 88
刘晨 2 72
钱小平 2 87
王大力 1 85
吴宾 4 74
张海 2 68
警告: 聚合或其他 SET 操作消除了空值。
-----
SELECT
Student.Sname,
COUNT(distinct Course.Cno) AS 选课门数,
AVG(Sc.Grade) AS 平均成绩
FROM
SC
JOIN Student ON (SC.Sno = Student.Sno)
JOIN Course ON (SC.Cno = Course.Cno)
GROUP BY
Student.Sname
HAVING
COUNT(distinct Course.Cno) >= 4
Sname 选课门数 平均成绩
---------- ----------- -----------
吴宾 4 74
警告: 聚合或其他 SET 操作消除了空值。
10. 查询数据库和信息系统这两门课的选课人数及平均成绩,并用课程号和选课人数,平均成绩表示出来
select 课程自号,count(*) 选课人数,AVG(成绩) as 平均分 into aaa from 成绩表 group by 课程号
selectaaa.课程号,选课人数,平均分 from aaa left join 课程表 on
课程表.课程号=aaa.课程号 where 名称 in('大学英语','计算机基础')
没有你的那两个课,我就随便用了我表里的两个课