MySQL - 常见SQL笔试题整理(长期更新)
1)?有一張表,里面有3個(gè)字段:語文,數(shù)學(xué),英語。其中有3條記錄分別表示語文70分,數(shù)學(xué)80分,英語58分,請用一條SQL語句查詢出這三條記錄并按以下條件顯示出來: 大于或等于80表示優(yōu)秀,大于或等于60表示及格,小于60分表示不及格。
select(case when 語文 >= 80 then '優(yōu)秀' when 語文 >= 60 and 語文 < 80 then '及格' else '不及格' end) as 語文,(case when 數(shù)學(xué) >= 80 then '優(yōu)秀' when 數(shù)學(xué) >= 60 and 數(shù)學(xué) < 80 then '及格' else '不及格' end) as 數(shù)學(xué),(case when 英語 >= 80 then '優(yōu)秀' when 英語 >= 60 and 英語 < 80 then '及格' else '不及格' end) as 英語from [table]2)一張table-t表,里面有三個(gè)字段:英語,其中有三條記錄分別表示語文70分,數(shù)學(xué)80分,英語58,請用一條sql語句查詢出這三條記錄并按以下條件顯示出來:大于或等于80表優(yōu)秀,大于等于60表及格,小于60表不及格顯示格式:及格 優(yōu)秀 不及格
select case when 語文>=80 then '優(yōu)秀' when 語文>=60 then '及格' else '不及格' end 語文 ,case when 數(shù)學(xué)>=80 then '優(yōu)秀' when 數(shù)學(xué)>=60 then '及格' else '不及格' end 數(shù)學(xué) ,case when 英語>=80 then '優(yōu)秀' when 英語>=60 then '及格' else '不及格' end 英語 from table_t3)表結(jié)構(gòu)和數(shù)據(jù)
date ???????????????result
2011-02-01 ?????????勝
2011-02-01 ?????????負(fù)
2011-02-01 ?????????勝
2011-02-02 ?????????勝
2011-02-02 ?????????負(fù)
查詢出來的結(jié)果:
date ????????勝 ????負(fù)
2011-02-01 ???2 ?????1
2011-02-02 ???1 ?????1
請寫出SQL語句:
SELECT date,( SELECT count( * ) FROM table1 WHERE date = t.date AND result = '勝' ) AS '勝',( SELECT count( * ) FROM table1 WHERE date = t.date AND result = '負(fù)' ) AS '負(fù)'FROM table1 AS t GROUP BY date;4)已知商品的關(guān)系模型:G(GNO,GNAME,GSALES,GPRICE,GTIME),GNO為商品編碼,GNAME為商品名稱,GSALES為商品銷售量,GPRICE為商品價(jià)格,GTIME為商品上架時(shí)間。按要求寫SQL語句,假設(shè)數(shù)據(jù)庫是mysql。創(chuàng)建這張商品表的sql。取商品銷售額排前5名的商品名稱和上架時(shí)間。
創(chuàng)建表CREATE TABLE `G` (`GNO` varchar(10) NOT NULL,`GNAME` varchar(20) NULL,`GSALES` decimal(10, 2) NULL,`GPRICE` decimal(10, 2) NULL,`GTIME` datetime(0) NULL,PRIMARY KEY (`GNO`));查詢銷售額前5的商品名稱和上架時(shí)間select GNAME,GTIME from g order by GSALES desc limit 0,55)用SQL語句查詢每門課都大于80的學(xué)生姓名
name ??kecheng ???fenshu
張三?????語文?????81
張三?????數(shù)學(xué)?????75
李四?????語文?????76
李四?????數(shù)學(xué)?????90
王五?????語文?????81
王五?????數(shù)學(xué)?????100
王五?????英語?????90
方法一:思路:如果能獲得一張表,由學(xué)生姓名,語文成績,數(shù)學(xué)成績,英語成績的表,剩下的就是在WHERE條件中篩選及可以獲得想要的結(jié)果。具體辦法:通過自連接的辦法,以“姓名”為連接條件,自連接三次,便可以獲得包含又姓名和三門課程成績的數(shù)據(jù)行。雖然可以得到想要的數(shù)據(jù)列。但會(huì)有很多冗余重復(fù)列!點(diǎn)評:此方法是根據(jù)題目,依題解題,中規(guī)中矩! 不過多張表連接非常耗費(fèi)時(shí)間。而且SQL語句也比較復(fù)雜,需要注意事項(xiàng)很多。SELECT D.name FROM (SELECT S.name,S.score AS ITEM1,S1.score AS ITEM2,S2.score AS ITEM3FROM Student Sinner join Student S1 on S.name = S1.name and S.course <> S1.courseinner join Student S2 on S.name = S2.name and S.course <> S2.courseWHERE S.score>=80 and S1.score>=80 and S2.score>=80) DGROUP BY D.name 方法二:思路:采用逆向思維想想。。。。。。求三門成績都大于80的人,也可以是使先查出有成績小于80 的人,再除去這些人不就是三門成績都大于80的人了么? 以前學(xué)過的數(shù)學(xué)邏輯逆向思維還真是有用的阿!!具體辦法:先掃描表,查出有成績小于80的人的姓名,然后再次掃描表,用not in 或not exists 方法。點(diǎn)評:此方法采用逆向思維,能快速寫出高效且簡單的 SQL語句。//not inSELECT DISTINCT A.name FROM Student AWHERE A.name not in(SELECT Distinct S.name FROM Student S WHERE S.score <80)//not existsSELECT DISTINCT A.name From Student A where not exists (SELECT 1 From Student S Where S.score <80 AND S.name =A.name) 方法三:SELECT S.nameFROM Student SGROUP BY S.nameHaving MIN(S.score)>=806)刪除除了自動(dòng)編號(hào)不同,其他都相同的學(xué)生冗余信息
有如下學(xué)生表
自動(dòng)編號(hào)?學(xué)號(hào)??姓名?課程編號(hào)?課程名稱?分?jǐn)?shù)
1 ?????2005001?張三?0001 ?????數(shù)學(xué) ??69
2 ?????2005002?李四?0001 ?????數(shù)學(xué) ??89
3 ?????2005001?張三?0001 ?????數(shù)學(xué) ??69
要求:刪除除了自動(dòng)編號(hào)不同,其他都相同的學(xué)生冗余信息
DELETE from score where (name,kecheng,fenshu) in ( select name,kecheng,fenshu from score GROUP by name,kecheng,fenshu having count(name) > 1) ;7)數(shù)據(jù)庫表如下,寫出sql語句求出每個(gè)人的平均成績,格式為【姓名,平均成績】
tbl_score
id ?學(xué)生ID ????課程名稱 ???成績
1 ?????1 ??????數(shù)學(xué) ?????99
2 ?????2 ??????數(shù)學(xué) ????100
3 ?????1 ??????語文 ?????80
4 ?????2 ??????語文 ?????96
tbl_student
id ?姓名 ??年齡
1 ??張三 ??12
2 ??李四 ??13
select s.姓名,avg(t.`成績`) 平均成績 from tbl_score t left join tbl_student s on t.`學(xué)生ID`=s.id group by s.id?
總結(jié)
以上是生活随笔為你收集整理的MySQL - 常见SQL笔试题整理(长期更新)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用offsetof对结构体指针偏移操作
- 下一篇: 【硬刚Hive】MYSQL/HIVESQ