sql自連線查詢至少選修了三門課程的學生的學生號

2021-03-04 02:04:37 字數 4542 閱讀 3140

1樓:匿名使用者

假設有學生表(student),課程表(course),學生課程關聯表(stu_cou);

學生的學號為student表的主鍵,那麼:

select sno from stu_cou group by sno having count(**o) > 3;

資料庫查詢至少選修了3門課程的所有學生辦法

2樓:度媽真偉大

select * from 學生表

where (select count(distinct 課程號) from 選修表 where 學號 = 學生表.學號) >= 3 或者 select * from 學生表 group by 學號 having count(課程號) >= 3 前邊是子查詢,後邊用分組加條件的方式

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

3樓:愛濤

select學號from選課表groupby學號havingcount(*)>=3

【拓展】

sql即結構化查詢語言(structured query language),是一種特殊目的的程式語言,是一種資料庫查詢和程式語言,用於訪問資料以及查詢、更新和管理關係資料庫系統;同時也是資料庫指令碼檔案的副檔名。

sql語句無論是種類還是數量都是繁多的,很多語句也是經常要用到的,sql查詢語句就是乙個典型的例子,無論是高階查詢還是低階查詢,sql查詢語句的需求是最頻繁的。

基本語句 資料記錄篩選:

sql="select * from 資料表 where欄位名=字段值 order by欄位名[desc]"(按某個字段值降序排列。預設公升序asc)

sql="select * from 資料表 where欄位名like '%字段值%' order by 欄位名 [desc]"

sql="select top 10 * from 資料表 where欄位名=字段值 order by 欄位名 [desc]"

sql="select top 10 * from 資料表 order by 欄位名 [desc]"

sql="select * from 資料表 where欄位名in ('值1','值2','值3')"

sql="select * from 資料表 where欄位名between 值1 and 值2"

4樓:匿名使用者

沒人回答你啊:(

select s.sno

,s.name

,sc.num as [選修課程數]

from student s

join (--查詢選修3門以上的學生

select sno

,count(*) as num

from sc

group by sno -- 按學生

分組having count(*) >= 3 -- 超過3門) sc on sc.sno = s.no

5樓:sggnht寒澤

select sno,count(*)as 選課門數from score

group by sno

having count(*)>=3

查詢選修了3門以上課程的學生學號;; 5

6樓:匿名使用者

其實是可以的,只是教科書的不完整而已

select sno

from sc

group by sno

having count(*)>3

*表示對任意列的統計,然後如果填寫特定列比如 count(**o)則不會計算該列含有null的記錄

比如:**o12

null

count(*)的結果為3 count(**o)的結果為2

7樓:匿名使用者

use student

goselect xs_kc.*

from 班級號

where 學號 in (

select 學號

from 班級號

group by 學號

having count(*) >=3)

看看對不

打字不易,如滿意,望採納。

sql查詢至少選了學生200215122選修的全部課程的學生號碼 5

8樓:hx何旭

好像是把 as 省略了 本來是

select distinct sno

from sc as scx

9樓:匿名使用者

別名,你還沒學好資料庫的基礎。sno是學號,sc是學生成績表。

資料庫問題 查詢至少選修了三門課程的學生編號和姓名。

10樓:匿名使用者

group by 分組依據的屬性至少要有乙個是查詢表裡的,即是上一行select from後面那個表要有的

查詢所有至少選修2門課程的學生的學號的語句怎麼寫?

11樓:匿名使用者

select sno(學生的學號) from sc(學生選課表)

group by sno having count(*)>1

12樓:匿名使用者

select sno from sc group by sno having count(**o)>=2

13樓:princess熱熱

比如選修課表2列: 學號, 選修課程

select 學號,

count(選修課程)

from 選修課

having count(選修課程) >= 2group by 學號

14樓:匿名使用者

⑥ select distinct x.s#

from sc as x, sc as y

where x.s#=y.s# and x.c#!=y.c#;

15樓:匿名使用者

selece 學號 from 表 條件(選修課程大於或等於2的不就行了麼)

16樓:匿名使用者

select 學號

from 選課表

group by 學號

having count(學號)>=2

要查詢選修了所有課程的學生資訊,怎樣用sql實現

17樓:匿名使用者

--用乙個簡單邏輯

select sno

from courseselection

group by sno

having count(*) = (select count(*) from course) -- 選課數內 = 課程總數容

18樓:闕黴錘

第一問:兩個復not exists表示雙制重否定:沒有乙個選了課的學生沒有選course表裡的課程

select sname

from student

where not exists /*沒有乙個學生滿足以下條件*/

(select * from course

where not exists /*什麼條件呢?沒有選過course表裡的課*/

(select * from sc

where sno =student.sno /*這裡兩個=分別指對應的關係,表示選過課並且是course裡and **o=course.**o) 的課,只不過用not exists否定掉了*/

第二問:其實和not in 是乙個意思 exists只返回true 或false 這裡not exists裡的內容 其實就是指學生選過的課程,再用not exists否定了,就變成了沒有選的

用sql語句查詢至少選修了學生『張徵』選修的全部課程的學生的姓名和學號,**如圖,結果求圖,要驗證

19樓:匿名使用者

select s.sno,s.sname from(select sno, count(**o) as num from sc where **o in (

select **o from s join sc on s.sno = sc.sno and sname ='張徵'

)group by sno

) t2

join(select count(**o) num from s join sc on s.sno = sc.sno and sname ='張徵' ) t1 on t2.

num = t1.num

join s on s.sno = t2.sno已驗證過

20樓:唐城冬

你也太會玩了吧,讓人橫著看啊

檢索出選修課程至少等於三門的學生學號和選課門數

學生表s 學號s 姓名sname,性別 年齡age 課程表c 課程號c 課程名 ame 成績表sc 學號s 課程號c 分數grade select s.s count c as 選課門數 from s,sc where s.s sc.s group by s.s having count c 3,我...

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

首先,簡單的把課程表與選修表關聯,course join study on course.cid study.cid 然後 按照課程號和課程名分組,group by course.cid,course.ame 最後,要求 選修的人數 學生總數 having count study.sid selec...

sql求解1查詢選修了軟體工程課程學生的學號

我汗,你連個表結構都沒有,讓人怎麼回答。其實我很好奇 前兩個問題是啥 lz沒貼出來 憂固畢應券娛恆了夜爪 創屑腥迫爹床盲都唯勸 資料庫sql語句中 查詢選修了全部課程的學生的學號和姓名 理解 首先頭腦中有三點概念 1 exists 子查詢找到的 提交not exists 子查詢中 找不到的提交 說明...