SQL-Server之--排重

相信小伙伴們在后臺開發(fā)過程中和數(shù)據(jù)庫打交道經(jīng)常需要排重莺掠,因此今天主要來記錄一下和排重相關(guān)的幾個關(guān)鍵字崭歧。
DISTINCT和GROUP BY顿仇,其實在一定情況下之前記錄的TOP關(guān)鍵字也可以用來排重

DISTINCT

DISTINCT中文翻譯為有區(qū)別的角雷,在SQL語句中此關(guān)鍵字也只會返回有所不同的內(nèi)容欣尼,把相同的內(nèi)容過濾掉爆雹,因此起到排重的作用°倒模基本語法為:
SELECT DISTINCT 列名稱 FROM 表名稱
DISTINCT依照 后面跟的列名稱來排重钙态,可以是一個字段,也可以是多個字段拒啰,并且只返回用來排重的這些字段驯绎,接下來就舉例子來看什么情況下使用此排重方法完慧。

首先我們來創(chuàng)建一張排重表谋旦,并使用INSERT INTO 排重表(id,name,identityid,age) VALUES('4','小果凍','130423199401102534','26')來插入幾條數(shù)據(jù),我們看最終的結(jié)果為:

1.png

現(xiàn)在有一個需求就是需要知道表中到底有幾個身份證號號屈尼,可以發(fā)現(xiàn)小明小紅identityid是相同的册着,接下里我們使用DISTINCT關(guān)鍵字看是否可以得到理想的結(jié)果

SELECT DISTINCT identityid FROM 排重表

結(jié)果為:

2.png

從上面我們可以看到得到了排重之后的identityid,由此可見關(guān)鍵字DISTINCT后面跟的列名稱是用來排重的也是用來返回的脾歧。接下來我們看通過兩個字段來排重甲捏,也就是說這兩個字段均相同才算是重復(fù)

SELECT DISTINCT id,identityid FROM 排重表

結(jié)果為:

3.png

當(dāng)然你也可以按除id外的所有字段來排重,但是需要注意的是DISTINCT后面跟的字段是排重字段也是最后輸出結(jié)果的字段鞭执,而且此關(guān)鍵字必須放在SELECT后面司顿,其他的前面芒粹,比如TOP等的前面.
接下來看一下和COUNT關(guān)鍵字共同使用的例子

//按一個字段排重后的count數(shù)
SELECT COUNT(DISTINCT age) FROM 排重表
//按多個字段排重的count數(shù)
SELECT COUNT (*)FROM(SELECT DISTINCT name,identityid,age FROM 排重表)AS b

運行結(jié)果大家可以自己試一下。

GROUP BY

GROUP BY分組統(tǒng)計大溜,形式上也是用來排重化漆,但是和上面的DISTINCT的使用場景不太一樣,一般和聚合函數(shù)一起使用钦奋,像SUM座云,MAX,GROUP_CONCAT等付材,小心小伙伴們看到下面的例子就可以體會到和DISTINCT的區(qū)別朦拖。

首先我們先來新建一張表,來簡單的記錄一下班級中學(xué)生的數(shù)學(xué)成績厌衔,通過下面的sql語句來批量的插入數(shù)據(jù)

//注意使用的關(guān)鍵字是VALUES而不是VALUE
INSERT INTO score(id,name,class,mathscore) VALUES('4','小糖豆','二班','79'),('5','小狗答','三班','93'),('6','小烏龜','三班','76')

接下來我們看到這張表中的數(shù)據(jù)是這樣的:

4.png

那么我如果想知道各個班級的平均成績怎么辦呢璧帝?

SUM,COUNT
//解釋一下這句sql葵诈,通過class進(jìn)行分組后裸弦,計算SUM(mathscore)就會得到按照某個class計算的分?jǐn)?shù)和,而COUNT(mathscore)則會得到某個class下幾個mathscore作喘,兩者相除則是該班級成績平均數(shù)理疙,AS關(guān)鍵字之前已經(jīng)記錄過了,這就不重申了泞坦。
SELECT class,SUM(mathscore)/COUNT(mathscore) AS average FROM score GROUP BY class ORDER BY average DESC

補充:
COALESCE(SUM(mathscore),0),這句sql的意思是當(dāng)和為null,時轉(zhuǎn)變成0,一般在業(yè)務(wù)中使用到,從數(shù)據(jù)庫中查到的數(shù)據(jù)時null時未做安全判斷直接進(jìn)行操作,會報空指針的錯誤,所以可以直接在sql層處理掉!

運行結(jié)果為:

5.png

那如果想要知道某個班的最高分?jǐn)?shù)呢窖贤?

SELECT class,MAX(mathscore) AS maxscore FROM score GROUP BY class ORDER BY maxscore DESC

運行結(jié)果為:

6.png

注意:SELECT 后面跟的列名稱必須是GROUP BY子句后面的分組對象或聚合函數(shù),否則會報錯贰锁。如SELECT * FROM score GROUP BY class,id,name赃梧;在這條sql中是按照class,id,name來進(jìn)行分組的,但是SELECT * 表示查詢該表中所有字段豌熄,但又因為mathscore不做分組標(biāo)志授嘀,因此會報錯[Err] 42000 - [SQL Server]選擇列表中的列 'score.mathscore' 無效,因為該列沒有包含在聚合函數(shù)或 GROUP BY 子句中锣险。
那么如果我們想要看各個班的成績列表呢?

GROUP_CONCAT
SELECT class, GROUP_CONCAT(name,mathscore),GROUP_CONCAT(mathscore) FROM score GROUP BY class
WeChat07fa91049d960dc46a58cc0b43c01895.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹄皱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芯肤,更是在濱河造成了極大的恐慌巷折,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崖咨,死亡現(xiàn)場離奇詭異锻拘,居然都是意外死亡,警方通過查閱死者的電腦和手機击蹲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門署拟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婉宰,“玉大人,你說我怎么就攤上這事推穷∩盅郑” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵缨恒,是天一觀的道長谴咸。 經(jīng)常有香客問我,道長骗露,這世上最難降的妖魔是什么岭佳? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮萧锉,結(jié)果婚禮上珊随,老公的妹妹穿的比我還像新娘。我一直安慰自己柿隙,他們只是感情好叶洞,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著禀崖,像睡著了一般衩辟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上波附,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天艺晴,我揣著相機與錄音,去河邊找鬼掸屡。 笑死封寞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仅财。 我是一名探鬼主播狈究,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盏求!你這毒婦竟也來了抖锥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤风喇,失蹤者是張志新(化名)和其女友劉穎宁改,沒想到半個月后缕探,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魂莫,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年爹耗,在試婚紗的時候發(fā)現(xiàn)自己被綠了耙考。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谜喊。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖倦始,靈堂內(nèi)的尸體忽然破棺而出斗遏,到底是詐尸還是另有隱情,我是刑警寧澤鞋邑,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布诵次,位于F島的核電站,受9級特大地震影響枚碗,放射性物質(zhì)發(fā)生泄漏逾一。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一肮雨、第九天 我趴在偏房一處隱蔽的房頂上張望遵堵。 院中可真熱鬧,春花似錦怨规、人聲如沸陌宿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽壳坪。三九已至,卻和暖如春掰烟,著一層夾襖步出監(jiān)牢的瞬間弥虐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工媚赖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留霜瘪,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓惧磺,卻偏偏與公主長得像颖对,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子磨隘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

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