日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

sql server——分组查询

發(fā)布時(shí)間:2024/3/26 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql server——分组查询 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

sql server里分組查詢(xún)通常用于配合聚合函數(shù),達(dá)到分類(lèi)匯總統(tǒng)計(jì)的信息。而其分類(lèi)匯總的本質(zhì)實(shí)際上就是先將信息排序,排序后相同類(lèi)別的信息會(huì)聚在一起,然后通過(guò)需求進(jìn)行統(tǒng)計(jì)計(jì)算。


?使用Group BY 進(jìn)行分組查詢(xún)

--查詢(xún)男女生的人數(shù)

?在沒(méi)有學(xué)習(xí)分組查詢(xún)之前,我們可以安裝常規(guī)的思路解決查詢(xún)需求:

?select count(*) from person where sex='男'

?select count(*) from person?where sex='女'

?那么現(xiàn)在又要個(gè)需要時(shí),查詢(xún)每個(gè)班級(jí)的總?cè)藬?shù)

如果按照常規(guī)解決查詢(xún),那么我們應(yīng)該思考的是:

1.每個(gè)班級(jí),我們并不知道在表里有哪些班級(jí),那么我們where 后的條件如何寫(xiě)?

2.如果該表里有1000個(gè)班組,那么我難道要寫(xiě)一千條where查詢(xún)語(yǔ)句?

面對(duì)這樣的問(wèn)題 sql server為我們準(zhǔn)備了Group by 關(guān)鍵字實(shí)現(xiàn)分組查詢(xún)

?在使用介紹Group by關(guān)鍵字之前,我們先來(lái)看看系統(tǒng)實(shí)現(xiàn)分組查詢(xún)的原理和邏輯:

?

映射成SQL語(yǔ)句:

select sex ,count(*) as 人數(shù) from Person group by sex

這個(gè)簡(jiǎn)短的語(yǔ)句,經(jīng)過(guò)上圖的原理,應(yīng)該要知道,第一步是先f(wàn)rom查詢(xún)表的所有信息,然后group by根據(jù)字段進(jìn)行分組后在統(tǒng)計(jì)匯總

?上面的案例是通過(guò)Count()函數(shù)進(jìn)行統(tǒng)計(jì),當(dāng)然分組匯總還可以使用其他的聚合函數(shù)進(jìn)行匯總。

ps:為了保證完整性,系統(tǒng)約定俗成,在使用了聚合函數(shù)的查詢(xún)語(yǔ)句中,除了聚合函數(shù),可以在查詢(xún)列表上,要出現(xiàn)其他字段,那么該字段就必須為分組字段,而且該字段一定要跟隨在GROUP BY關(guān)鍵字后面。

?


?

多列分組查詢(xún)

?

--實(shí)例需求,查詢(xún)每一個(gè)班組,男女生的人數(shù)

分析:顯然需求是兩組,每一個(gè)班需要?jiǎng)澐纸M,男女也需要分組

實(shí)現(xiàn)圖解:

SQL語(yǔ)句:

select TeamID,sex,COUNT(*) from student group by TeamID,Sex order by TeamID

經(jīng)驗(yàn):搞清楚需要分幾組,搞清楚分組的順序,一輪一輪的分,系統(tǒng)是等分組之后才會(huì)進(jìn)行匯總信息


?

使用HAVING子句

?

演示示例:--查詢(xún)每一個(gè)班級(jí)男女生的人數(shù),同時(shí)只需要顯示人數(shù)數(shù)量超過(guò)1人的記錄

分析:此查詢(xún)顯然是對(duì)上一個(gè)示例的多列分組進(jìn)行篩選。

?試在這學(xué)的知識(shí)范圍內(nèi)來(lái)解決此查詢(xún)需求。。。。

解決辦法,使用HAVING關(guān)鍵字:

HAVING核心:是對(duì)分組統(tǒng)計(jì)之后的結(jié)果集,進(jìn)行數(shù)據(jù)的篩選

SQL語(yǔ)句:

select TeamId,sex,COUNT(*) as renshu from Person group by TeamId,Sex having count(*)>=1 order by TeamId

?

where和having的不同:where是對(duì)原始數(shù)據(jù)進(jìn)行篩選,having是對(duì)分組時(shí)候的數(shù)據(jù)進(jìn)行篩選

?


?

查詢(xún)語(yǔ)句的執(zhí)行順序

在這里引出查詢(xún)機(jī)制里對(duì)查詢(xún)語(yǔ)句里的關(guān)鍵字的執(zhí)行順序

?

查詢(xún)關(guān)鍵字家族成員

select top/distinct 字段列表 from 表列表 where 篩選條件 group by 分組字段列表 having 對(duì)分組之后得到的結(jié)果集篩選 order by 排序字段列表

?

?

執(zhí)行順序:

1.from

2.where

3.group by

4.having

5.根據(jù)select 關(guān)鍵之后的要顯示的字段,進(jìn)行結(jié)果集顯示

6.order by 對(duì)最終結(jié)果集進(jìn)行排序

7.top/dictinct

總結(jié)

以上是生活随笔為你收集整理的sql server——分组查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。