學生桌學生:
會計科目表課程
教師表教師
報表SC
45個問題預覽:
科目
1.查詢“01”課程成績高於“02”課程成績的學生的信息和課程成績。
1.1查詢到既有“01”課程又有“02”課程。
1.2查詢“01”課程存在但“02”課程可能不存在的情況(不存在則為空)1.3查詢“01”課程不存在但“02”課程存在的情況。
2.查詢平均成績在60分以上的學生的學號、學生姓名和平均成績。
3.查詢SC表中有成績的學生信息。
4.查詢所有學生的學號、學生姓名、課程總數以及所有課程的總成績(如果沒有成績,則為空)。
4.1查看有成績的學生信息
5.打聽壹下姓李的老師的人數。
6.查詢學過“張三”的學生信息。
7.查詢未學完所有課程的學生信息。
8.查詢至少有壹門課程且學號為“01”的學生信息。
9.查詢與“01”課程完全相同的其他學生的信息。
10.查詢從未學習過張三老師所教課程的學生姓名。
11.查詢兩門或以上課程不及格的學生的學號、姓名和平均成績。
12.檢索“01”課程中分數低於60分的學生信息,並按分數降序排列。
13.從高分到低分顯示所有課程的分數和所有學生的平均分。
14.查詢各科目最高分、最低分、平均分:以如下形式顯示:課程ID、課程名稱、最高分、最低分、平均分、通過率、中等率、優秀率、優秀率》=60、中等:70-80、優秀:80-90、優秀:》=90要求輸出課程號和選課學生數,查詢結果按學生數降序排列;如果學生人數相同,則按課程編號升序排列。
15.根據所有科目的分數進行排名,並顯示排名。當比分重復時,保持排名空缺15.1。根據所有科目的分數進行排名,並顯示排名。當分數重復時,合並排名。
16.查詢學生的總成績並進行排名。如果總分重復,保持排名空缺16.1。查詢學生的總成績並進行排名。如果總分重復,保留排名空缺。
17.統計每個科目每個分數段的人數:課程編號、課程名稱、【100-85】、【85-70】、【70-60】、【60-0】及其百分比。
18.查詢所有科目前三名的成績記錄
19.詢問參加每門課程的學生人數。
20.找出只修兩門課的學生的學生證和姓名。
21.查詢男孩和女孩的數量
22.查詢姓名中包含“風”字的學生信息
23.查詢同名學生列表,統計同名學生人數。
24.查詢1990年出生的學生名單。
25.查詢每門課程的平均分,成績將按平均分降序排列。當平均分相同時,他們將根據課程編號按升序排列。
26.查詢所有平均分大於或等於85分的學生的學號、姓名和平均分。
27.查詢課程名稱為“數學”且分數在60分以下的學生的姓名和分數。
28.查詢所有學生的課程和成績(存在學生沒有成績和沒有課程的情況)
29.查詢任何70分以上課程的名稱、課程名稱和分數。
30.查詢失敗的課程
31.查詢課程編號為01且課程成績在80分以上的學生的學號和姓名。
32.找出每門課的學生人數。
33.假設成績不重復,查詢參加過張三老師所教課程的學生中成績最高的學生的信息和成績。
34.在分數重復的假設下,查詢參加過張三老師所教課程的學生中分數最高的學生的信息及其分數。
35.查詢不同課程成績相同的學生的學號、課程號和學生成績。
36.查詢各科前兩名。
37.統計參加每門課程的學生人數(僅針對超過5名學生的課程)。
38.檢索至少選修了兩門課程的學生的學生編號。
39.查詢修完所有課程的學生信息。
40.詢問每個學生的年齡,只能按年份。
41.顯示出生日期,當前日期
42.詢問本周過生日的學生。
43.打聽下周生日的學生。
44.詢問這個月過生日的學生。
45.詢問下個月生日的學生。
詳細的
1.查詢“01”課程成績高於“02”課程成績的學生的信息和課程成績。
清空妳的大腦:
(1)學生信息和課程分數的分布對應於student表和sc表。
所以,我們需要把它們聯系起來。
(2)需要比較同壹學生的不同成績,因此需要再次關聯評分表sc。
③使用where進行篩選。
1.1查詢到既有“01”課程又有“02”課程。
?什麽叫‘01’和‘02’課程並存?
?這是否意味著cid =‘01‘和cid =‘02‘?
理清思路:同壹個學生同時選修了01和02兩門課程。
1.2查詢“01”課程存在但“02”課程可能不存在的情況(不存在則為空)。
?課程不存在時如何顯示null?
使用左連接
?什麽情況下-不
1.3查詢沒有“01”科目但有“02”科目的情況。
想法:找到沒有01課程的記錄後,
然後進行內部連接以找到02的課程。
或者
2.查詢平均成績在60分以上的學生的學號、學生姓名和平均成績。
想法:
成績在sc表中,學生姓名在student表中,可以通過學生編號sid進行關聯。
首先從sc表中查詢平均分大於60分的學生信息。
錯誤1111(hy 000):組函數的使用無效
如果出現這種錯誤,我們應該在這裏考慮它。記住:group by +having+聚合函數。
壹些錯誤的嘗試:
成功查詢:
接下來,通過學生號sid與學生表相關聯。
發現結果明顯是錯誤的,
繼續修改:
註意:當多個表關聯時,需要明確字段的歸屬表;當查詢聚合函數的結果時,例如avg(score),最好將其重命名。
有壹些問題:
以上兩種寫法的區別在於子查詢的avg(score)是否重命名,但兩種方法的結果明顯不同。為什麽?妳錯過了什麽嗎?
回答:
Mysql的分組特殊規則:
如果使用group by,除了後跟group by的列名之外,select語句中只能有聚合函數。
如果除了group by後面的列名和聚合函數之外還有其他列名,sql將只輸出第壹行,如果是‘*‘,則只輸出第壹行記錄。
例如:
總結:
如果使用group by+聚合函數,最好在查詢時只查詢聚合函數(+group by後的列名),以避免在查詢其余字段時只顯示壹條記錄。
註意:必須查詢聚合函數。
3.查詢SC表中有成績的學生信息。
想法:
(1)首先確定表:sc表和student表。
找到壹個重名,
(2)使用group by sid刪除重復的學生信息查詢,如下所示:
註意:更嚴謹的寫法:
(1)首先編寫查詢分組字段的子查詢。
(2)嵌套(1)中的字段
註意:分組依據是單獨編寫的
4.查詢所有學生的學號、學生姓名、課程總數以及所有課程的總成績(如果沒有成績,則為空。
(1)確定所涉及的表格範圍:
學生,sc
(2)
想法:
修改:
(2)
(3)
您也可以考慮先連接到查詢,但仍然建議使用這種方法。
4.1查看有成績的學生信息
(1)首先確定使用的表格範圍。
Sc和學生
(2)首先,獲取成績單上的學生證。
③根據id查看學生信息
?這和第三個問題完全壹樣嗎
回答:思路基本壹致。
參考答案:
其思路是看student表上的id是否在sc表的id(即判斷是否存在)in/exists中。
5.打聽壹下姓李的老師的人數。
6.查詢學過“張三”的學生信息。
(1)應該使用所有四個表。
②四次嵌套
有什麽簡單的方法嗎?
答:參考答案也是通過嵌套查詢逐步實現的。
7.查詢未學完所有課程的學生信息。
(1)關鍵字:“所有課程”在課程表中,“同學信息”在學生表中,但它們需要sid相關,因此還需要sc表。
(2)如何過濾“所有課程”
用課程的數量來限制。
A.a.course表獲取課程總數。
b .根據sid分組,統計sc表中的課程數量。
C.然後,從sc中篩選出課程數=3的學生。
D.查詢與(3)中的學生sid對應的學生信息
8.查詢至少有壹門課程且學號為“01”的學生信息。
(1)關鍵詞:
至少壹門課程“-學生編號為01的學生課程中的課程,“學生編號為01的學生課程”-課程表,“學生信息”-學生表
②想法:
A.01學生們學習了哪些課程?
發現01名學生已經學完了所有三門課程,因此其余學生只需學習0多門課程。
B.學號01以外的學號有哪些?
C.如何查詢其他同學的課程信息,比如cid?
使用其余學生的id進行分組、計數和篩選。
給出次數大於0的學生id,然後根據id查詢學生信息。
9.查詢與“01”課程完全相同的其他學生的信息。
(1)確定相關表:
01個學生的課程-SC表;
其他學生的學生表信息;
②想法:
A.01學生學習了哪些課程?
發現01學生選修了三門課,
B.總共有多少門課程?
所以總有三門課,01的學生都學過了。
c .在其余學生中查詢課程數為3的學生的id。
d、跟進對應id查詢學生表中的學生信息。
10.查詢從未學習過張三老師所教課程的學生姓名。
(1)確定相關表:
張三老師;;
張三老師教cid’課程;;
sid‘-SC;
學生姓名sname‘-學生;
先搞清楚妳在張三老師的課程裏學過什麽,然後不在。
②想法:
A.從教師表中查詢張三老師的tid。
B.從課程表中查找張三老師的教學課件。
C.從sc中查詢cid=02的學生的sid。
D.使用not in查詢從未學習過張三老師課程的學生信息
11.查詢兩門或以上課程不及格的學生的學號、姓名和平均成績。
(1)根據關鍵字確定相關表:
不及格課程數》2分& lt60 - sc表,並計數(1)》三
‘姓名‘-學生表
②想法:
A.從sc表中查詢得分小於60的sid,並根據sid進行分組和計數。
B.加入以獲取失敗課程數大於或等於2的sid、sname和avg_score。
12.檢索“01”課程中分數低於60分的學生信息,並按分數降序排列。
(1)根據關鍵字確定相關表:
01課程分數小於60‘-sc表
學生信息‘-學生
(2)想法和實施:
A.首先,從sc表中查詢01課程成績低於60分的學生信息,並按成績降序排列。
B.根據(1)中的sid,從學生處查詢學生信息。
13.從高分到低分顯示所有課程的分數和所有學生的平均分。
(1)根據關鍵字確定相關表。
平均成績-SC表
(2)思路和實施過程:
A.首先,根據平均分從高到低顯示學生的sc。
妳還想顯示每個學生每門學科的成績嗎?
回答:是的,在sc表中添加壹列avg_score。
14.查詢各科目最高分、最低分、平均分:以如下形式顯示:課程ID、課程名稱、最高分、最低分、平均分、通過率、中等率、優秀率、優秀率》=60、中等:70-80、優秀:80-90、優秀:》=90要求輸出課程號和選課學生數,查詢結果按學生數降序排列;如果學生人數相同,則按課程編號升序排列。
(1)根據關鍵字確定相關表:
成就“-sc;;
‘課程名稱‘-課程;
(2)想法和實施:
a .根據cid對sc表進行分組,並查詢初步聚合函數。
B.繼續改進
?如何計算各種費率
答:考查條件數情況下的技能時
修改為題目要求的格式:
15.按所有科目的分數排序,並顯示排名。如果分數重復,請將排名留空。
(1)根據關鍵字確定相關表:
Sc表
②想法:
借助賦值變量@ i。
A.向原始數據添加@rank列
b.
每壹行都將與內部連接(笛卡爾乘積)相關聯,而無需指定關聯條件。
註意: