SQL 查詢每門課程的課程名 選課學生姓名及其學號,選課人數

2021-03-26 12:53:10 字數 6135 閱讀 5545

1樓:匿名使用者

我的學生資料庫跟你的差不多,我就用我的這些表給你做了個

select c.**o,s.sname,s.sno,選課人數 from course c

left join sc on c.**o=sc.**o

left join student s on s.sno=sc.sno

left join (select c.**o, count(s.sno) 選課人數 from

course c left join sc on c.**o=sc.**o

left join student s on s.sno=sc.sno

group by c.**o) as t on t.**o=c.**o

2樓:

你連關係都沒給,怎麼查。。。

請寫出sql查詢統計每門課程的選修人數顯示課程編號學生人數。

3樓:無怨深淵

sql查詢語句:select 課程編號,count(*) 學生人數 from 課程 group by 選修人數;

ps:sql用於統計

專和分組的函式是:

統計函式:屬

count(*)

分組函式: group by 分組表示式。

sql:

結構化查詢語言,是一種特殊目的的程式語言,是一種資料庫查詢和程式設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統;同時也是資料庫指令碼檔案的副檔名。

group by :

從字面意義上理解就是「根據(by)一定的規則進行分組(group)」。它的作用是通過一定的規則將一個資料集劃分成若干個小的區域,然後針對若干個小區域進行資料處理。

4樓:楓葉vs童話

select

c.`dao**ame`,

count(distinct s.`sno`) as '選修內人數容'

from

score s

right join course c

on s.`**o` = c.`**o`

group by c.`**ame`

5樓:匿名使用者

select 成績表.課程編號,count(成績表.課程編號) from 成績表 group by 成績表.課程編號

6樓:匿名使用者

select 課程資訊

表.課程名稱,count(distinct 成績表.學號) from 成績表

join 課程專資訊屬表 on 成績表.課程編號=課程資訊表.課程編group by 課程資訊表.課程名稱

7樓:阿彭

select **o,count(sno)

from sc

group by **o;

8樓:匿名使用者

這個還要問下學校方面

sql資料庫中查詢選修了所有課程的學生的學號和姓名及選修門數

9樓:騰訊電腦管家

select s.sname, s.s*** , s.

sage, s.sdept c.**ame g.

grade from student s , course c ,grade g where s.sno = g.sno and g.

**o = c.**o;

10樓:站在風中望著你

??????????????????????????你好,sql是什麼

sql查詢 統計每門課的選課人數及不及格人數

11樓:匿名使用者

你確定你寫的這四個表沒有問題麼?如果你一個學生 選了2個科目,你怎麼儲存這個資訊?

看完樓主發的**後,感覺你的描述和**表達的意思有出入。等待其他大蝦賜教,學習了

12樓:匿名使用者

select a.**um,a.**ame,a.rs,b.bjg_rs

from

(select sec.**um,c.**ame,count(s.snum) as 'rs'

from student s,course c,sc,sections sec

where s.snum = sc.snum and

sc.se**um = sec.se**um and

sec.**um = c.**um

group by sec.**um,c.**ame) a

left join

(select sec.**um,c.**ame,count(s.snum) as 'bjg_rs'

from student s,course c,sc,sections sec

where s.snum = sc.snum and

sc.se**um = sec.se**um and

sec.**um = c.**um and

sc.score < '60'

group by sec.**um,c.**ame) b

on a.**um = b.**um

用sql語句查詢選修了3門及以上課程的學生學號,姓名,選修的課程數

資料庫問題 列出選修了一門以上課程的學生學號,及其選修門數 用sql語句查詢

用sql語句查詢每個學生選修的課程名及其成績?

13樓:消逝的風

select 姓名,課程名,成績 from (課程名所在的表名 c join 成績所在的表名 s on c.課程號=s.課程號) join 學生資訊表 on s.

學號=學生資訊表.學號 ;

具體的例子:

select sname,**ame,grade from student st left join(score s left join course c on s.**o=c.**o)

on st.sno=s.sno;

求解: sql資料庫 求選課人數最多的學生學號和姓名

14樓:匿名使用者

select top 1 with ties a.stuid,b.stuname

from xuanke a

left outer join students bon a.stuid=b.stuid

group by a.stuid ,b.stunameorder by count(a.classid) desc

資料庫sql語句中 查詢選修了全部課程的學生的學號和姓名 理解

15樓:匿名使用者

這思路是用了個雙重否定來求解的。因為sql中沒有全稱量詞,於是要把題目轉換成等價的存在量詞表達形式。即根據(∀x)p≡¬∃(¬p)來轉化為雙重否定的表達。

同時由於「學生x選修課程y 」

之間是不定的,需要使用兩個exist。

於是「選修了全部課程的學生」等價於「不存在(有他沒選的課的)學生」

使用了兩次not exists來實現雙重否定。

先查詢在課程裡查詢「沒有學生選的課程」,第一次否定,

然後再在學生裡查詢「沒有屬於上面情況的學生」的名字,第二次否定;

結合起來,就是 「沒有(沒選的課程)的學生」了。

好了,從裡到外寫出來,就是

select sname from student where not exists(

select * from course where not exists(

select * from sc where sno=student.sno and **o=course.**o

))這個只不過是逆向思維來解決問題的方法。舉一反三,比如要查「被全部學生都選的課程名」

則是求「不存在有學生沒選它的課程」

select **ame from course where not exists(

select * from student where not exists(

select * from sc where sno=student.sno and **o=course.**o

))再如,查「所有人都沒選修的課程」,這個雖然是單次否定了,但仍需要兩個存在量詞表述。

等價於查詢「不存在有學生選了它的課程」。

select **ame from course where not exists (

select * from student where exists (

select * from sc where **o=course.**o and sno=student.sno))

16樓:風嘯無名

沒有資料庫難以具體說明,總的來說,就是一個多表查詢包括學生基本資訊表、課程資訊表、成績表等,學號為主鍵,查詢姓名和課程、分數等資訊,總分用sum算。

1 。 exists 子查詢找到的提交

not exists 子查詢中 找不到的提交說明:不要去翻譯為存在和不存在,把腦袋搞暈。

2 。 建立程式迴圈的概念,這是一個動態的查詢過程。如 for迴圈 。

3 。 exists執行的流程exists首先執行外層查詢,再執行記憶體查詢,與in相反。 流程為首先取出外層中的第一元組, 再執行內層查詢,將外層表的第一元組代入,若內層查詢為真,即有結果時。

返回外層表中的第一元 組,接著取出第二元組,執行相同的演算法。一直到掃描完外層整表 。

17樓:月光雪松

樓主彆著急!

為好理解我們先從這條sql語句所要實現的功能入手。

功能:查出選修了全部課程的學資訊。那麼sql在查詢資料的時候的遍歷每一個學生資訊。判斷該學生是否滿足條件。

1 如果存在這麼一條course記錄a(暫命名為a), 則不選擇該學生。否則該學生就被查詢出來

2 那麼記錄a,是怎麼查出來的呢?a查出的條件是:不存在sc記錄b,只要不存在b,就可查出a

3 那麼b記錄是什麼?b記錄是選課資訊表,根據學號和課程號可查出記錄b

如果b為空(該學生有沒有選的課程)也就是不存在,則a就有一條記錄,根據規則2可知:因為有a,所以該學生資訊將不被輸出。

如果在sc中每一個課程編號和該學生編號為條件都能夠查出一條記錄b(也就是該學生選修了全部課程),所以a記錄不存在,則輸出該學生的資訊。

也就是在選課表中,如果學生選了全部課程(也就是滿足select * from sc where sno= student.sno and **o= course.**o)始終存在,當然,課程編號是任意的)。

那麼就輸出該學生的資訊。你不要為理解這條sql而忘記了它本身是要做什麼.

帶著sql的目的(要實現的功能)去理解就好了。

18樓:雨夜的緣分

1,select * from sc where sno= student.sno and **o= course.**o

在sc表中查詢符合sno= student.sno and **o= course.**o這兩個條件的所有資料,

2,select * from course where not exists (select * from sc where sno= student.sno and **o= course.**o);這句的意思是在course表中查詢不滿足1,中的所有資料

3,select sname from student where not exists (select * from course where not exists (select * from sc where sno= student.sno and **o= course.**o));

這整句的意思就是查詢student表中所有不滿足2,資料,就是選修了全部課程的學生了

只所以會有這麼多查詢,可能sno= student.sno and **o= course.**o這兩個條件是是sc表查詢的條件分散在另外兩個表中,引用了雙重否定,也就是肯定的意思,達到可以讓student.

sno ,course.**o,在sc表中作為條件的目的

夠詳細吧!!!!

sql如何查詢選課兩門以上而且各門課程均及格的學生學號及其所選課程的門數

count 絕對不對,學號也算一列!一句可能不夠,用存貯過程吧 sql 查詢每門課程的課程名 選課學生姓名及其學號,選課人數 我的學生資料庫跟你的差不多,我就用我的這些表給你做了個 select c.o,s.sname,s.sno,選課人數 from course c left join sc on...

SQL查詢全部學生都選修的課程的課程號和課程名問題

樓上回答的 很不錯了 可以這樣做的。這個問題其實真的很簡單的。用sql語句列出全部學員都選修的課程的課程名和課程號 資料庫sql語句中 查詢選修了全部課程的學生的學號和姓名 理解 這思路是用了個雙重否定來求解的。因為sql中沒有全稱量詞,於是要把題目轉換成等價的存在量詞表達形式。即根據 x p p ...

急用啊!!SQL語句查詢!!查詢選課門數最多的詳細資訊,包括選選修門數!感謝給位了

你這裡講的選選修門數是不是指間接先修課 先修課的先修課 如果是的話你大可採用自連線的方式把對應先修課的先修課找出來。最後那兩題用分組的思想來做就可以了,就比如說統計每個老師的開課門數,你按老師特有的屬性 如 職工號 來進行分組,然後用count函式進行統計,因為一行表示的就是一門課程。表結構都沒有,...