最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分組查詢GROUP BY的使用與SQL執(zhí)行順序的講解

 更新時(shí)間:2019年03月19日 15:49:32   作者:CODETC  
今天小編就為大家分享一篇關(guān)于分組查詢GROUP BY的使用與SQL執(zhí)行順序的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧

在SQL中使用GROUP BY來(lái)對(duì)SELECT的結(jié)果進(jìn)行數(shù)據(jù)分組,在具體使用GROUP BY之前需要知道一些重要的規(guī)定。

  • 1、GROUP BY子句可以包含任意數(shù)目的列。也就是說(shuō)可以在組里再分組,為數(shù)據(jù)分組提供更細(xì)致的控制。
  • 2、如果在GROUP BY子句中指定多個(gè)分組,數(shù)據(jù)將在最后指定的分組上匯總。
  • 3、GROUP BY子句中列出的每個(gè)列都必須是檢索列或有效的表達(dá)式(但不能是聚集函數(shù))。如果在SELECT中使用了表達(dá)式,則必須在GROUP BY子句中指定相同的表達(dá)式。不能使用別名。
  • 4、出了聚集計(jì)算語(yǔ)句外,SELECT語(yǔ)句中的每一列都必須在GROUP BY子句中給出。
  • 5、如果分組列中有NULL值,則NULL將作為一個(gè)分組返回。如果有多行NULL值,它們將分為一組。
  • 6、GROUP BY子句必須在WHERE子句之后,ORDER BY之前。

過(guò)濾分組

對(duì)分組過(guò)于采用HAVING子句。HAVING子句支持所有WHERE的操作。HAVING與WHERE的區(qū)別在于WHERE是過(guò)濾行的,而HAVING是用來(lái)過(guò)濾分組。

另一種理解WHERE與HAVING的區(qū)別的方法是,WHERE在分組之前過(guò)濾,而HAVING在分組之后以每組為單位過(guò)濾。

分組與排序

一般在使用GROUP BY子句時(shí),也應(yīng)該使用ORDER BY子句。這是保證數(shù)據(jù)正確排序的唯一方法。

SQL SELECT語(yǔ)句的執(zhí)行順序:

  • 1、from子句組裝來(lái)自不同數(shù)據(jù)源的數(shù)據(jù);
  • 2、where子句基于指定的條件對(duì)記錄行進(jìn)行篩選;
  • 3、group by子句將數(shù)據(jù)劃分為多個(gè)分組;
  • 4、使用聚集函數(shù)進(jìn)行計(jì)算;
  • 5、使用having子句篩選分組;
  • 6、計(jì)算所有的表達(dá)式;
  • 7、使用order by對(duì)結(jié)果集進(jìn)行排序;
  • 8、select 集合輸出。

舉個(gè)例子吧

select 考生姓名, max(總成績(jī)) as max總成績(jī)
from tb_Grade
where 考生姓名 is not null
group by 考生姓名
having max(總成績(jī)) > 600
order by max總成績(jī)

在上面的示例中 SQL 語(yǔ)句的執(zhí)行順序如下:

  • 1、首先執(zhí)行 FROM 子句, 從 tb_Grade 表組裝數(shù)據(jù)源的數(shù)據(jù)
  • 2、執(zhí)行 WHERE 子句, 篩選 tb_Grade 表中所有數(shù)據(jù)不為 NULL 的數(shù)據(jù)
  • 3、執(zhí)行 GROUP BY 子句, 把 tb_Grade 表按 "學(xué)生姓名" 列進(jìn)行分組
  • 4、計(jì)算 max() 聚集函數(shù), 按 "總成績(jī)" 求出總成績(jī)中最大的一些數(shù)值
  • 5、執(zhí)行 HAVING 子句, 篩選課程的總成績(jī)大于 600 分的.
  • 6、執(zhí)行 ORDER BY 子句, 把最后的結(jié)果按 "Max 成績(jī)" 進(jìn)行排序.

注:如果使用了連接join和on,則會(huì)在where執(zhí)行之前先執(zhí)行on,然后執(zhí)行join,接著才去執(zhí)行where。

附:

MySQL中的聚集函數(shù):

  • 1、count()返回某列的行數(shù)
  • 2、avg()返回某列的平均值
  • 3、max()返回某列的最大值
  • 4、min()返回某列的最小值
  • 5、sum()返回某列的和
  • 6、distinct 去除重復(fù)值

注:avg()忽略值為null的行,count(*)時(shí)統(tǒng)計(jì)所有行,count(列)時(shí)忽略為null的行

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • 比較詳細(xì)的MySQL字段類型說(shuō)明

    比較詳細(xì)的MySQL字段類型說(shuō)明

    MySQL支持大量的列類型,它可以被分為3類:數(shù)字類型、日期和時(shí)間類型以及字符串(字符)類型。本節(jié)首先給出可用類型的一個(gè)概述,并且總結(jié)每個(gè)列類型的存儲(chǔ)需求,然后提供每個(gè)類中的類型性質(zhì)的更詳細(xì)的描述。概述有意簡(jiǎn)化,更詳細(xì)的說(shuō)明應(yīng)該考慮到有關(guān)特定列類型的附加信息,例如你能為其指定值的允許格式。
    2008-08-08
  • 淺談MySQL使用笛卡爾積原理進(jìn)行多表查詢

    淺談MySQL使用笛卡爾積原理進(jìn)行多表查詢

    這篇文章主要介紹了淺談MySQL使用笛卡爾積原理進(jìn)行多表查詢, 文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • MySQL制作具有千萬(wàn)條測(cè)試數(shù)據(jù)的測(cè)試庫(kù)的方法

    MySQL制作具有千萬(wàn)條測(cè)試數(shù)據(jù)的測(cè)試庫(kù)的方法

    這篇文章主要介紹了MySQL制作具有千萬(wàn)條測(cè)試數(shù)據(jù)的測(cè)試庫(kù)的方法,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-11-11
  • 在CentOS上安裝phpMyAdmin的教程

    在CentOS上安裝phpMyAdmin的教程

    這篇文章主要介紹了在CentOS上安裝phpMyAdmin的教程,phpMyAdmin是一款借助PHP腳本來(lái)操作MySQL的工具,非常具有人氣,需要的朋友可以參考下
    2015-06-06
  • 使用mydumper多線程備份MySQL數(shù)據(jù)庫(kù)

    使用mydumper多線程備份MySQL數(shù)據(jù)庫(kù)

    MySQL在備份方面包含了自身的mysqldump工具,但其只支持單線程工作,這就使得它無(wú)法迅速的備份數(shù)據(jù)。而 mydumper作為一個(gè)實(shí)用工具,能夠良好支持多線程工作,這使得它在處理速度方面十倍于傳統(tǒng)的
    2013-11-11
  • MySQL5.7完全卸載步驟詳解

    MySQL5.7完全卸載步驟詳解

    這篇文章主要介紹了MySQL5.7完全卸載的詳細(xì)步驟以及把中間遇到的問(wèn)題做了分析,需要的朋友跟著操作下吧。
    2018-02-02
  • 查看當(dāng)前mysql使用頻繁的sql語(yǔ)句(詳解)

    查看當(dāng)前mysql使用頻繁的sql語(yǔ)句(詳解)

    下面小編就為大家?guī)?lái)一篇查看當(dāng)前mysql使用頻繁的sql語(yǔ)句(詳解)。小編覺(jué)的挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • mysql 8.0.17 安裝配置圖文教程

    mysql 8.0.17 安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.17 安裝配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • mysql導(dǎo)出指定數(shù)據(jù)或部份數(shù)據(jù)的方法

    mysql導(dǎo)出指定數(shù)據(jù)或部份數(shù)據(jù)的方法

    mysql雖然可以使用mysqldump來(lái)進(jìn)行數(shù)據(jù)的到處,可是在很多場(chǎng)合的需求都不一樣,比如我只要導(dǎo)出某個(gè)字段呢?只要導(dǎo)出某些我需要的數(shù)據(jù)呢?
    2014-03-03
  • MySQL通過(guò)日志恢復(fù)數(shù)據(jù)的操作步驟

    MySQL通過(guò)日志恢復(fù)數(shù)據(jù)的操作步驟

    在MySQL中恢復(fù)誤刪除的數(shù)據(jù)是一個(gè)常見(jiàn)但復(fù)雜的問(wèn)題,具體的方法取決于幾個(gè)因素,包括您是否有備份、使用的是哪種存儲(chǔ)引擎(如InnoDB或MyISAM)、以及您的數(shù)據(jù)庫(kù)配置等,本文給大家介紹了MySQL通過(guò)日志恢復(fù)數(shù)據(jù)的操作步驟,需要的朋友可以參考下
    2024-12-12

最新評(píng)論

蕉岭县| 泌阳县| 勐海县| 紫阳县| 金华市| 姜堰市| 揭西县| 郑州市| 兰考县| 盐城市| 枣庄市| 雅安市| 清镇市| 玛纳斯县| 宿松县| 修武县| 大新县| 息烽县| 桃园市| 花莲县| 和田县| 山丹县| 潮安县| 田林县| 玛沁县| 廉江市| 龙海市| 河曲县| 剑川县| 平远县| 正蓝旗| 秦安县| 莱州市| 乌拉特前旗| 祁阳县| 万载县| 石林| 苍溪县| 辽宁省| 屯留县| 镇平县|