查詢選修兩門以上課程的學生的平均成績
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('大學英語','計算機基礎')
沒有你的那兩個課,我就隨便用了我表裡的兩個課