從零學(xué)會(huì)SQL:匯總分析

一秩彤、知識(shí)點(diǎn)

匯總函數(shù)

分組

排序

分頁(yè)

SQL運(yùn)行順序

二锅减、練習(xí)

1伏钠、查詢(xún)課程編號(hào)為“0002”的總成績(jī)

分析思路
select 查詢(xún)結(jié)果 [總成績(jī):匯總函數(shù)sum]
from 從哪張表中查找數(shù)據(jù)[成績(jī)表score]
where 查詢(xún)條件 [課程號(hào)是0002]

select sum(成績(jī))
from score
where 課程號(hào) = '0002';

2音比、查詢(xún)選了課程的學(xué)生人數(shù)

分析思路
select 查詢(xún)結(jié)果 [不重復(fù)的學(xué)號(hào):匯總函數(shù)count ]
from 從哪張表中查找數(shù)據(jù)[成績(jī)表score];

select count(distinct 學(xué)號(hào)) as 學(xué)生人數(shù) 
from score;

3穴吹、查詢(xún)各科成績(jī)最高和最低的分

分析思路
select 查詢(xún)結(jié)果 [課程號(hào),最高分:max(成績(jī)) ,最低分:min(成績(jī))]
from 從哪張表中查找數(shù)據(jù) [成績(jī)表score]
group by 分組 [各科成績(jī):按課程號(hào)分組];

select 課程號(hào),max(成績(jī)) as 最高分,min(成績(jī)) as 最低分
from score
group by 課程號(hào);

4、查詢(xún)每門(mén)課程被選修的學(xué)生數(shù)

分析思路
select 查詢(xún)結(jié)果 [課程號(hào)赘方,選修該課程的學(xué)生數(shù):匯總函數(shù)count]
from 從哪張表中查找數(shù)據(jù) [成績(jī)表score]
group by 分組 [每門(mén)課程:按課程號(hào)分組];

select 課程號(hào), count(學(xué)號(hào))
from score
group by 課程號(hào);

5烧颖、查詢(xún)男生、女生人數(shù)

分析思路
select 查詢(xún)結(jié)果 [性別窄陡,對(duì)應(yīng)性別的人數(shù):匯總函數(shù)count]
from 從哪張表中查找數(shù)據(jù) [學(xué)生表student]
group by 分組 [男生炕淮、女生人數(shù):按性別分組];

select 性別,count(*)
from student
group by 性別;

6、查詢(xún)平均成績(jī)大于60分學(xué)生的學(xué)號(hào)和平均成績(jī)

分析思路
select 查詢(xún)結(jié)果 [學(xué)號(hào)跳夭,平均成績(jī):匯總函數(shù)avg(成績(jī))]
from 從哪張表中查找數(shù)據(jù) [成績(jī)表score]
group by 分組 [平均成績(jī):先按學(xué)號(hào)分組涂圆,再計(jì)算平均成績(jī)]
having 對(duì)分組結(jié)果指定條件 [平均成績(jī)大于60分]

select 學(xué)號(hào), avg(成績(jī))
from score
group by 學(xué)號(hào)
having avg(成績(jī))>60;

7、查詢(xún)至分析思路

select 查詢(xún)結(jié)果 [學(xué)號(hào),每個(gè)學(xué)生選修課程數(shù)目:匯總函數(shù)count]
from 從哪張表中查找數(shù)據(jù) [課程的學(xué)生學(xué)號(hào):課程表score]
group by 分組 [每個(gè)學(xué)生選修課程數(shù)目:按課程號(hào)分組币叹,然后用匯總函數(shù)count計(jì)算出選修了多少門(mén)課]
having 對(duì)分組結(jié)果指定條件 [至少選修兩門(mén)課程:每個(gè)學(xué)生選修課程數(shù)目>=2]少選修兩門(mén)課程的學(xué)生學(xué)號(hào)

select 學(xué)號(hào), count(課程號(hào)) as 選修課程數(shù)目
from score
group by 學(xué)號(hào)
having count(課程號(hào))>=2;

8润歉、查詢(xún)同名同姓學(xué)生名單并統(tǒng)計(jì)同名人數(shù)

分析思路
select 查詢(xún)結(jié)果 [姓名,人數(shù):匯總函數(shù)count()]
from 從哪張表中查找數(shù)據(jù) [學(xué)生表student]
group by 分組 [姓名相同:按姓名分組]
having 對(duì)分組結(jié)果指定條件 [姓名相同:count(
)>=2];

select 姓名,count(*) as 人數(shù)
from student
group by 姓名
having count(*)>=2;

9、查詢(xún)不及格的課程并按課程號(hào)從大到小排列

分析思路
select 查詢(xún)結(jié)果 [課程號(hào)]
from 從哪張表中查找數(shù)據(jù) [成績(jī)表score]
where 查詢(xún)條件 [不及格:成績(jī) <60]
order by 對(duì)查詢(xún)結(jié)果排序[課程號(hào)從大到小排列:降序desc];

select 課程號(hào)
from score 
where 成績(jī)<60
order by 課程號(hào) desc;

10颈抚、查詢(xún)每門(mén)課程的平均成績(jī)踩衩,結(jié)果按平均成績(jī)升序排序,平均成績(jī)相同時(shí),按課程號(hào)降序排列

分析思路
select 查詢(xún)結(jié)果 [課程號(hào),平均成績(jī):匯總函數(shù)avg(成績(jī))]
from 從哪張表中查找數(shù)據(jù) [成績(jī)表score]
group by 分組 [每門(mén)課程:按課程號(hào)分組]
order by 對(duì)查詢(xún)結(jié)果排序[按平均成績(jī)升序排序:asc驱富,平均成績(jī)相同時(shí)锚赤,按課程號(hào)降序排列:desc];

select 課程號(hào), avg(成績(jī)) as 平均成績(jī)
from score
group by 課程號(hào)
order by 平均成績(jī) asc,課程號(hào) desc;

sqlzoo練習(xí)

練習(xí)地址

1.更改查詢(xún)語(yǔ)句,顯示1950年的諾貝爾獎(jiǎng)

select yr, subject, winner
from nobel
where yr = 1950;

2.誰(shuí)贏得了1962年的文學(xué)獎(jiǎng)(Literature)

select winner
from nobel
where yr = 1962 and subject = 'Literature';

3.“愛(ài)因斯坦”(Albert Einstein)獲獎(jiǎng)年份和獎(jiǎng)項(xiàng)

select yr, subject
from nobel
where winner = 'Albert Einstein';

4.2000年及以后的和平獎(jiǎng)(‘Peace’)得獎(jiǎng)?wù)?/h4>
select winner
from nobel
where subject = 'Peace' and yr >= 2000;

5.1980年至1989年的文學(xué)獎(jiǎng)獲獎(jiǎng)?wù)叩乃屑?xì)節(jié)(年份褐鸥,獎(jiǎng)項(xiàng)线脚,獲獎(jiǎng)?wù)撸?/h4>
select yr, subject, winner
from nobel
where yr between 1980 and 1989 and subject = 'Literature';

6.查找下面獲獎(jiǎng)?wù)叩乃性敿?xì)信息:

西奧多·羅斯福:Theodore Roosevelt
伍德羅·威爾遜:'Woodrow Wilson
吉米卡特:Jimmy Carter

select *
from nobel
where winner in ('Theodore Roosevelt', 'Woodrow Wilson', 'Jimmy Carter');

7.獲獎(jiǎng)姓名以John開(kāi)頭的獲獎(jiǎng)?wù)?/h4>
select winner
from nobel
where winner LIKE 'john%';

8.查找1980年物理學(xué)獎(jiǎng)(Physics)獲得者,以及1984年的化學(xué)獎(jiǎng)(Chemistry)獲得者

select *
from nobel
where (subject = 'physics' and yr = '1980') OR (subject = 'Chemistry' and yr = 1984);

9.查找1980年獲獎(jiǎng)?wù)叩哪攴萁虚牛?jiǎng)項(xiàng)和名稱(chēng)浑侥,不包括化學(xué)獎(jiǎng)和醫(yī)學(xué)獎(jiǎng)('Chemistry', 'Medicine')

select *
from nobel
where yr = 1980 and subject NOT in ('Chemistry', 'Medicine');

10.在早年(1910年之前,不包括1910年)獲得“醫(yī)學(xué)”獎(jiǎng)的人的年份晰绎,主題和名稱(chēng)寓落,以及晚年(2004年之后,包括2004年)的“文學(xué)”獎(jiǎng)的獲獎(jiǎng)?wù)?/h4>
select *
from nobel
where (subject  = 'Medicine' and yr < 1910) or (subject = 'Literature' and yr >= 2004);

11.查找獲獎(jiǎng)?wù)撸≒ETERGRüNBERG)的獲獎(jiǎng)信息

select *
from nobel
where winner='PETER GRüNBERG';

12.查找獲獎(jiǎng)?wù)撸‥ugene O'Neill)的獲獎(jiǎng)信息

select *
from nobel
where winner = 'Eugene O''Neill';

如果字符串中包含單引號(hào)或雙引號(hào)寒匙,該怎么處理零如?比如Eugene O'Neill?

使用sql的轉(zhuǎn)義字符锄弱。在字符串中考蕾,有些符號(hào)有特殊含義,比如Eugene O'Neill中的單引號(hào)(')会宪,使用兩個(gè)單引號(hào)('')表示字符串里面的單引號(hào)(')肖卧,也就是轉(zhuǎn)義字符。

這個(gè)例子里掸鹅,Eugene O'Neill塞帐,在sql里這么寫(xiě)'Eugene O''Neill'

13.列出獲獎(jiǎng)?wù)撸攴菀约矮@獎(jiǎng)?wù)邚腟ir開(kāi)始的主題巍沙。首先顯示最新的葵姥,然后按名稱(chēng)順序顯示

select winner, yr, subject
from nobel
where winner LIKE 'sir%'
order by yr DESC, winner;

14.顯示1984年的諾貝爾獲獎(jiǎng)?wù)呒捌洫?jiǎng)項(xiàng)。按獎(jiǎng)項(xiàng)和得獎(jiǎng)?wù)呙峙判颍?但化學(xué)獎(jiǎng)和物理獎(jiǎng)在最后列出句携。

/*如果寫(xiě)成 subject in ('Physics', 'Chemistry') DESC 則化學(xué)獎(jiǎng)和物理獎(jiǎng)在最前面列出*/
  SELECT winner,
         subject
    FROM nobel
   WHERE yr = 1984
ORDER BY subject IN ('Physics', 'Chemistry'),
-- 其他按“subject”和“winner”升序列出
         subject,
         winner;
sql解釋?zhuān)?/h5>

subject in ('Physics','Chemistry')返回值(0或者1)榔幸,
會(huì)對(duì)每一個(gè)subject做一個(gè)if的判斷,有的是1矮嫉,沒(méi)有的是0
再用order by把這些值排序在下面

不是這兩個(gè)科目('Physics','Chemistry')的就是0排在前邊削咆,
是這兩個(gè)科目的返回1就排在后邊了。
因?yàn)榛瘜W(xué)和物理科目題目要求在后面蠢笋,所以引入此函數(shù)出現(xiàn)0拨齐、1,達(dá)成題目的要求

練習(xí)地址

1. 顯示世界總?cè)丝?/h4>
select sum(population) 
from world;

2. 列出所有洲名稱(chēng)昨寞,不能有重復(fù)值

select distinct continent 
from world;

3. 非洲(Africa)的GDP總和

select sum(gdp) 
from world
where continent='Africa';

4.有多少個(gè)國(guó)家具有至少百萬(wàn)(1000000)的面積瞻惋。

select count(name) 
from world 
where area>=1000000;

5.('France','Germany','Spain')(“法國(guó)”厦滤,“德國(guó)”,“西班牙”)的總?cè)丝谑嵌嗌伲?/h4>
select sum(population) 
from world
where name in('France','Germany','Spain');

6.顯示每個(gè)大洲以及大洲的國(guó)家數(shù)量

select continent,count(name) 
from world
group by continent;

7.顯示每個(gè)洲的國(guó)家數(shù)量熟史,并且這些國(guó)家里人口數(shù)量至少為1000萬(wàn)

select continent,count(name) 
from world
where population>=10000000
group by continent;

8.列出每個(gè)洲名稱(chēng)馁害,并且每個(gè)洲的總?cè)丝跀?shù)要大于等于一億

select continent 
from world
group by continent
having sum(population)>=100000000;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蹂匹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凹蜈,老刑警劉巖限寞,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異仰坦,居然都是意外死亡履植,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)悄晃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)玫霎,“玉大人,你說(shuō)我怎么就攤上這事妈橄∈” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵眷蚓,是天一觀的道長(zhǎng)鼻种。 經(jīng)常有香客問(wèn)我,道長(zhǎng)沙热,這世上最難降的妖魔是什么叉钥? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮篙贸,結(jié)果婚禮上投队,老公的妹妹穿的比我還像新娘。我一直安慰自己爵川,他們只是感情好敷鸦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著雁芙,像睡著了一般轧膘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兔甘,一...
    開(kāi)封第一講書(shū)人閱讀 51,708評(píng)論 1 305
  • 那天谎碍,我揣著相機(jī)與錄音,去河邊找鬼洞焙。 笑死蟆淀,一個(gè)胖子當(dāng)著我的面吹牛拯啦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播熔任,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼褒链,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了疑苔?” 一聲冷哼從身側(cè)響起甫匹,我...
    開(kāi)封第一講書(shū)人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惦费,沒(méi)想到半個(gè)月后兵迅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡薪贫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年恍箭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞧省。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扯夭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鞍匾,到底是詐尸還是另有隱情交洗,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布候学,位于F島的核電站藕筋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梳码。R本人自食惡果不足惜隐圾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掰茶。 院中可真熱鬧暇藏,春花似錦、人聲如沸濒蒋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抢肛。三九已至疟羹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間围橡,已是汗流浹背暖混。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翁授,地道東北人拣播。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓晾咪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親贮配。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谍倦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容