国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mysql中的group by 和 having使用

這篇具有很好參考價(jià)值的文章主要介紹了mysql中的group by 和 having使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

mysql中的group by 和 having 使用

理論

–sql中的group by 用法解析:
– Group By語(yǔ)句從英文的字面意義上理解就是“根據(jù)(by)一定的規(guī)則進(jìn)行分組(Group)”。
–它的作用是通過(guò)一定的規(guī)則將一個(gè)數(shù)據(jù)集劃分成若干個(gè)小的區(qū)域,然后針對(duì)若干個(gè)小區(qū)域進(jìn)行數(shù)據(jù)處理。
–注意:group by 是先排序后分組;
–舉例子說(shuō)明:如果要用到group by 一般用到的就是“每這個(gè)字” 例如說(shuō)明現(xiàn)在有一個(gè)這樣的表:每個(gè)部門(mén)有多少人 就要用到分組的技術(shù)
select DepartmentID as ‘部門(mén)名稱(chēng)’,
COUNT(*) as ‘個(gè)數(shù)’ from BasicDepartment group by DepartmentID

–這個(gè)就是使用了group by +字段進(jìn)行了分組,其中我們就可以理解為我們按照了部門(mén)的名稱(chēng)ID
–DepartmentID將數(shù)據(jù)集進(jìn)行了分組;然后再進(jìn)行各個(gè)組的統(tǒng)計(jì)數(shù)據(jù)分別有多少;
–如果不用count(*) 而用類(lèi)似下面的語(yǔ)法
select DepartmentID,DepartmentName from BasicDepartment group by DepartmentID

–將會(huì)出現(xiàn)錯(cuò)誤
–消息 8120,級(jí)別 16,狀態(tài) 1,第 1 行
–選擇列表中的列 ‘BasicDepartment.DepartmentName’ 無(wú)效,因?yàn)樵摿袥](méi)有包含在聚合函數(shù)或 GROUP BY 子句中。
–這就是我們需要注意的一點(diǎn),如果在返回集字段中,這些字段要么就要包含在Group By語(yǔ)句的后面,
–作為分組的依據(jù);要么就要被包含在聚合函數(shù)中。
–出現(xiàn)的錯(cuò)誤詳解:咱們看看group by 的執(zhí)行的過(guò)程,先執(zhí)行select 的操作返回一個(gè)程序集,
–然后去執(zhí)行分組的操作,這時(shí)候他將根據(jù)group by 后面的字段
–進(jìn)行分組,并且將相同的字段并稱(chēng)一列數(shù)據(jù),如果group by 后面沒(méi)有這個(gè)字段的話(huà)就要分成好多的數(shù)據(jù)。
–但是分組就只能將相同的數(shù)據(jù)分成兩列數(shù)據(jù),而一列中又只能放入一個(gè)字段,所以那些沒(méi)有進(jìn)行分組的
–數(shù)據(jù)系統(tǒng)不知道將數(shù)據(jù)放入哪里,所以就出現(xiàn)此錯(cuò)誤
–目前一種分組情況只有一條記錄,一個(gè)數(shù)據(jù)格是無(wú)法放入多個(gè)數(shù)值的,
–所以這里就需要通過(guò)一定的處理將這些多值的列轉(zhuǎn)化成單值,然后將其放在對(duì)應(yīng)的
–數(shù)據(jù)格中,那么完成這個(gè)步驟的就是聚合函數(shù)。這就是為什么這些函數(shù)叫聚合函數(shù)(aggregate functions)了

–group by all語(yǔ)法解析:
–如果使用 ALL 關(guān)鍵字,那么查詢(xún)結(jié)果將包括由 GROUP BY 子句產(chǎn)生的所有組,即使某些組沒(méi)有符合搜索條件的行。
–沒(méi)有 ALL 關(guān)鍵字,包含 GROUP BY 子句的 SELECT 語(yǔ)句將不顯示沒(méi)有符合條件的行的組。
select DepartmentID,DepartmentName as ‘部門(mén)名稱(chēng)’,
COUNT(*) as ‘個(gè)數(shù)’ from BasicDepartment group by all DepartmentID,DepartmentName

–group by 和having 解釋?zhuān)呵疤岜仨毩私鈙ql語(yǔ)言中一種特殊的函數(shù):聚合函數(shù),
–例如SUM, COUNT, MAX, AVG等。這些函數(shù)和其它函數(shù)的根本區(qū)別就是它們一般作用在多條記錄上。
–WHERE關(guān)鍵字在使用集合函數(shù)時(shí)不能使用,所以在集合函數(shù)中加上了HAVING來(lái)起到測(cè)試查詢(xún)結(jié)果是否符合條件的作用。
create TABLE Table1
(
ID int identity(1,1) primary key NOT NULL,
classid int,
sex varchar(10),
age int,
)

–添加測(cè)試數(shù)據(jù)
Insert into Table1 values(1,‘男’,20)
Insert into Table1 values(2,‘女’,22)
Insert into Table1 values(3,‘男’,23)
Insert into Table1 values(4,‘男’,22)
Insert into Table1 values(1,‘男’,24)
Insert into Table1 values(2,‘女’,19)
Insert into Table1 values(4,‘男’,26)
Insert into Table1 values(1,‘男’,24)
Insert into Table1 values(1,‘男’,20)
Insert into Table1 values(2,‘女’,22)
Insert into Table1 values(3,‘男’,23)
Insert into Table1 values(4,‘男’,22)
Insert into Table1 values(1,‘男’,24)
Insert into Table1 values(2,‘女’,19

–舉例子說(shuō)明:查詢(xún)table表查詢(xún)每一個(gè)班級(jí)中年齡大于20,性別為男的人數(shù)
select COUNT(*)as ‘>20歲人數(shù)’,classid from Table1 where sex=‘男’ group by classid,age having age>20
–需要注意說(shuō)明:當(dāng)同時(shí)含有where子句、group by 子句 、having子句及聚集函數(shù)時(shí),執(zhí)行順序如下:
–執(zhí)行where子句查找符合條件的數(shù)據(jù);
–使用group by 子句對(duì)數(shù)據(jù)進(jìn)行分組;對(duì)group by 子句形成的組運(yùn)行聚集函數(shù)計(jì)算每一組的值;最后用having 子句去掉不符合條件的組。
–having 子句中的每一個(gè)元素也必須出現(xiàn)在select列表中。有些數(shù)據(jù)庫(kù)例外,如oracle.
–having子句和where子句都可以用來(lái)設(shè)定限制條件以使查詢(xún)結(jié)果滿(mǎn)足一定的條件限制。
–having子句限制的是組,而不是行。where子句中不能使用聚集函數(shù),而having子句中可以。
————————————————

測(cè)試驗(yàn)證


select * from Table1
mysql中的group by 和 having使用
select classid as ‘班級(jí)名稱(chēng)’ , COUNT(*) as ‘所有人數(shù)’ from Table1 group by classid

mysql中的group by 和 having使用

select classid as ‘班級(jí)名稱(chēng)’ , COUNT(*) as ‘男生人數(shù)’ from (select * from Table1 t where sex = ‘男’)Table1 group by classid

mysql中的group by 和 having使用

select COUNT(*)as ‘>20歲男生人數(shù)’,classid as '班級(jí)’from Table1 where sex=‘男’ group by classid,age having age>20;

mysql中的group by 和 having使用
select COUNT(*)as ‘女生人數(shù)’,classid as '班級(jí)’from Table1 group by classid,sex having sex = ‘女’;

mysql中的group by 和 having使用

select COUNT(*)as ‘男生人數(shù)’,classid as '班級(jí)’from Table1 group by classid,sex having sex = ‘男’;
mysql中的group by 和 having使用文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-474681.html

到了這里,關(guān)于mysql中的group by 和 having使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL 中的 distinct 和 group by 哪個(gè)效率更高?

    在語(yǔ)義相同,有索引的情況下:group by和distinct都能使用索引,效率相同。 在語(yǔ)義相同,無(wú)索引的情況下:distinct效率高于group by。原因是distinct 和 group by都會(huì)進(jìn)行分組操作,但group by可能會(huì)進(jìn)行排序,觸發(fā)filesort,導(dǎo)致sql執(zhí)行效率低下。 DISTINCT 用于返回唯一不同的值。

    2024年01月23日
    瀏覽(25)
  • SQL HAVING 子句詳解:在 GROUP BY 中更靈活的條件篩選

    SQL HAVING 子句詳解:在 GROUP BY 中更靈活的條件篩選

    HAVING 子句被添加到SQL中,因?yàn)?WHERE 不能與聚合函數(shù)一起使用。 HAVING語(yǔ)法 以下是Northwind示例數(shù)據(jù)庫(kù)中“Customers”表的一部分選擇: CustomerID CustomerName ContactName Address City PostalCode Country 1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 2 Ana Trujillo Emparedados y helados Ana

    2024年02月05日
    瀏覽(22)
  • Mysql group by使用示例

    Mysql group by使用示例

    總數(shù)據(jù): 索引情況:

    2024年02月11日
    瀏覽(25)
  • 玩轉(zhuǎn)SQL語(yǔ)句之group by 多字段分組查詢(xún)與having子句,一篇解決你的疑惑!

    玩轉(zhuǎn)SQL語(yǔ)句之group by 多字段分組查詢(xún)與having子句,一篇解決你的疑惑!

    分組,顧名思義,分成小組。簡(jiǎn)而言之就是就是把相同的數(shù)據(jù)分到一個(gè)組。 如下表(表名gb),里面有16條數(shù)據(jù),前8條是狗狗,后8條是貓貓. 現(xiàn)在對(duì)name這個(gè)列進(jìn)行分組查詢(xún) 得到結(jié)果如下: 我們發(fā)現(xiàn)他把原始表分為了兩個(gè)小組,狗狗小組和貓貓小組。從這可以看出分組查詢(xún)就

    2023年04月18日
    瀏覽(21)
  • 【MySQL】MySQL表的增刪查改以及聚合函數(shù)/group by句子的使用

    語(yǔ)法: 插入兩條記錄,value_list 數(shù)量必須和定義表的列的數(shù)量及順序一致 注意,這里在插入的時(shí)候,也可以不用指定id(當(dāng)然,那時(shí)候就需要明確插入數(shù)據(jù)到那些列了),那么mysql會(huì)使用默認(rèn)的值進(jìn)行自增。 插入兩條記錄,value_list 數(shù)量必須和指定列數(shù)量及順序一致 由于 主鍵

    2024年01月19日
    瀏覽(25)
  • 【postgresql 基礎(chǔ)入門(mén)】分組查詢(xún) group by 子句的寫(xiě)法,分組條件過(guò)濾having子句的寫(xiě)法,多列的分組以及與join聯(lián)合的多表分組

    ? 專(zhuān)欄內(nèi)容 : postgresql內(nèi)核源碼分析 手寫(xiě)數(shù)據(jù)庫(kù)toadb 并發(fā)編程 個(gè)人主頁(yè) :我的主頁(yè) 管理社區(qū) :開(kāi)源數(shù)據(jù)庫(kù) 座右銘:天行健,君子以自強(qiáng)不息;地勢(shì)坤,君子以厚德載物. 本文主要分享在postgresql 數(shù)據(jù)庫(kù)中對(duì)查詢(xún)結(jié)果進(jìn)行分組group by,以及對(duì)分組進(jìn)行條件過(guò)濾having,同時(shí)對(duì)它

    2024年04月11日
    瀏覽(51)
  • MySQL使用GROUP BY分組后,獲取每組中時(shí)間記錄最新的行對(duì)應(yīng)的其他字段

    MySQL使用GROUP BY分組后,獲取每組中時(shí)間記錄最新的行對(duì)應(yīng)的其他字段

    在編寫(xiě)MySQL數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)句時(shí),經(jīng)常遇到使用GROUP BY分組后,需要獲取每組中時(shí)間記錄最新的行對(duì)應(yīng)的其他字段這一情況。例如下表(t_score): id student course score examdate 1 小張 語(yǔ)文 89.0 2023-06-29 2 小張 數(shù)學(xué) 90.0 2023-06-29 3 小張 語(yǔ)文 91.0 2024-01-10 4 小張 數(shù)學(xué) 93.0 2024-01-10 5 小李 語(yǔ)

    2024年01月17日
    瀏覽(22)
  • mysql GROUP BY 怎么 order by 排序

    在 MySQL 中使用 GROUP BY 子句時(shí),如果需要對(duì)結(jié)果進(jìn)行排序,可以使用 ORDER BY 子句來(lái)對(duì)分組后的結(jié)果進(jìn)行排序。 ORDER BY 子句應(yīng)該放在 GROUP BY 子句之后,使用逗號(hào)來(lái)分隔需要排序的列,并在排序列后指定排序順序。例如: 在這個(gè)例子中,SELECT 語(yǔ)句選擇了表 table1 中的列 column1 和

    2024年02月16日
    瀏覽(17)
  • MySQL Group by 優(yōu)化查詢(xún)

    ? 使用的是臨時(shí)表,加文件排序(數(shù)據(jù)量小用內(nèi)存排序) 注意:這里加的索引一般不會(huì)僅僅是group by后面的字段索引(大多數(shù)多少條件是一個(gè)以 該字段開(kāi)頭聯(lián)合索引 ,方便使用覆蓋索引或者索引下推)。如果該字段是一個(gè)varchar類(lèi)型, 最好 加個(gè)int冗余字段,建立索引的字段,

    2024年02月05日
    瀏覽(21)
  • MySQL 中 Group By 的用法

    Group By 是一種 SQL 查詢(xún)語(yǔ)句,常用于根據(jù)一個(gè)或多個(gè)列對(duì)查詢(xún)結(jié)果進(jìn)行分組。在 Group By 子句中指定的列將成為分組依據(jù),而在 Select 子句中指定的列必須是聚合函數(shù)(例如 SUM、AVG、COUNT 等)或分組列。 Group By 的語(yǔ)法如下:? SELECT column_name(s) FROM table_name WHERE condition GROUP BY co

    2024年02月13日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包