目錄
1、概述
2、原始表
3、簡單Group By
4、Group By 和Order By
6、Group By All
8、Having与Where的区别
9、Compute 和 Compute By
首頁 資料庫 mysql教程 系統整理SQL中Group By的用法與Group By多個欄位限制

系統整理SQL中Group By的用法與Group By多個欄位限制

Aug 03, 2018 pm 05:06 PM

SQL中什麼時候使用Group By?本文詳細講解了Group By的用法,它的簡單的定義就是將一個“數據集”劃分成若干個“小區域”,然後針對若干個“小區域”進行數據處理。 Group By中Select指定的欄位限制有哪些? apache php mysql

1、概述

“Group By”從字面上理解就是根據“By”指定的規則對資料進行分組,所謂的分組就是將一個“資料集”分割成若干個“小區域”,然後針對若干個“小區域”進行資料處理。

2、原始表

3、簡單Group By

範例1

select 类别, sum(数量) as 数量之和
from A
group by 类别
登入後複製

#傳回結果如下表,實際上就是分類總結。

4、Group By 和Order By

#範例2

select 类别, sum(数量) AS 数量之和
from A
group by 类别
order by sum(数量) desc
登入後複製

傳回結果如下表

#在Access中不可以使用“order by 數量之和desc”,但在SQL Server中則可以。

5、Group By中Select指定的欄位限制

範例3

select 类别, sum(数量) as 数量之和, 摘要
from A
group by 类别
order by 类别 desc
登入後複製

範例3執行後會提示下錯誤,如下圖。這就是需要注意的一點,在select指定的欄位要麼就要包含在Group By語句的後面,作為分組的依據;要麼就要被包含在聚合函數中。

6、Group By All

範例4

select 类别, 摘要, sum(数量) as 数量之和
from A
group by all 类别, 摘要
登入後複製
範例4中則可以指定「摘要」字段,原因在於「多列分組”中包含了“摘要字段”,其執行結果如下表
select 类别, 摘要, sum(数量) AS 数量之和
from A
group by 类别, 摘要
登入後複製
7、Group By與聚合函數 #在範例3中提到group by語句中select指定的欄位必須是“分組依據欄位”,其他欄位若想出現在select中則必須包含在聚合函數中,常見的聚合函數如下表:函數作用支援性sum(列名) 求和    #max(列名)最大    min(列名)最小值    avg(列名)平均值    #first(列名)第一筆記錄僅Access支援last(列名)最後一筆記錄
#“多列分組”實際上就是按照多列(類別摘要)合併後的值進行分組,範例4中可以看到「a, a2001, 13」為「a, a2001, 11」和「a, a2001, 2」兩筆記錄的合併。 SQL Server中雖然支援“group by all”,但Microsoft SQL Server 的未來版本中將刪除 GROUP BY ALL,避免在新的開發工作中使用 GROUP BY ALL。 Access中是不支援「Group By All」的,但Access中同樣支援多列分組,上述SQL Server中的SQL在Access可以寫成
###僅Access支援############count(列名)###### #統計記錄數######注意和count(*)的差異#############

示例5:求各组平均值

select 类别, avg(数量) AS 平均值 from A group by 类别;
登入後複製

示例6:求各组记录数目

select 类别, count(*) AS 记录数 from A group by 类别;
登入後複製

示例7:求各组记录数目

8、Having与Where的区别

  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。

  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。

示例8

select 类别, sum(数量) as 数量之和 from A
group by 类别
having sum(数量) > 18
登入後複製

示例9:Having和Where的联合使用方法

select 类别, SUM(数量)from A
where 数量 gt;8
group by 类别
having SUM(数量) gt; 10
登入後複製

9、Compute 和 Compute By

select * from A where 数量 > 8
登入後複製

执行结果:

示例10:Compute

select *
from A
where 数量>8
compute max(数量),min(数量),avg(数量)
登入後複製

执行结果如下:

compute子句能够观察“查询结果”的数据细节或统计各列数据(如例10中max、min和avg),返回结果由select列表和compute统计结果组成。

示例11:Compute By

select *
from A
where 数量>8
order by 类别
compute max(数量),min(数量),avg(数量) by 类别
登入後複製

执行结果如下:

示例11与示例10相比多了“order by 类别”和“... by 类别”,示例10的执行结果实际是按照分组(a、b、c)进行了显示,每组都是由改组数据列表和改组数统计结果组成,另外:

  • compute子句必须与order by子句用一起使用

  • compute...by与group by相比,group by 只能得到各组数据的统计结果,而不能看到各组数据

在实际开发中compute与compute by的作用并不是很大,SQL Server支持compute和compute by,而Access并不支持

相关文章:

sql group by 语句用法

sql group by语法与实例

相关视频:

SQL趣味课堂

以上是系統整理SQL中Group By的用法與Group By多個欄位限制的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

說明InnoDB全文搜索功能。 說明InnoDB全文搜索功能。 Apr 02, 2025 pm 06:09 PM

InnoDB的全文搜索功能非常强大,能够显著提高数据库查询效率和处理大量文本数据的能力。1)InnoDB通过倒排索引实现全文搜索,支持基本和高级搜索查询。2)使用MATCH和AGAINST关键字进行搜索,支持布尔模式和短语搜索。3)优化方法包括使用分词技术、定期重建索引和调整缓存大小,以提升性能和准确性。

如何使用Alter Table語句在MySQL中更改表? 如何使用Alter Table語句在MySQL中更改表? Mar 19, 2025 pm 03:51 PM

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

與MySQL中使用索引相比,全表掃描何時可以更快? 與MySQL中使用索引相比,全表掃描何時可以更快? Apr 09, 2025 am 12:05 AM

全表掃描在MySQL中可能比使用索引更快,具體情況包括:1)數據量較小時;2)查詢返回大量數據時;3)索引列不具備高選擇性時;4)複雜查詢時。通過分析查詢計劃、優化索引、避免過度索引和定期維護表,可以在實際應用中做出最優選擇。

可以在 Windows 7 上安裝 mysql 嗎 可以在 Windows 7 上安裝 mysql 嗎 Apr 08, 2025 pm 03:21 PM

是的,可以在 Windows 7 上安裝 MySQL,雖然微軟已停止支持 Windows 7,但 MySQL 仍兼容它。不過,安裝過程中需要注意以下幾點:下載適用於 Windows 的 MySQL 安裝程序。選擇合適的 MySQL 版本(社區版或企業版)。安裝過程中選擇適當的安裝目錄和字符集。設置 root 用戶密碼,並妥善保管。連接數據庫進行測試。注意 Windows 7 上的兼容性問題和安全性問題,建議升級到受支持的操作系統。

如何為MySQL連接配置SSL/TLS加密? 如何為MySQL連接配置SSL/TLS加密? Mar 18, 2025 pm 12:01 PM

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

InnoDB中的聚類索引和非簇索引(次級索引)之間的差異。 InnoDB中的聚類索引和非簇索引(次級索引)之間的差異。 Apr 02, 2025 pm 06:25 PM

聚集索引和非聚集索引的區別在於:1.聚集索引將數據行存儲在索引結構中,適合按主鍵查詢和範圍查詢。 2.非聚集索引存儲索引鍵值和數據行的指針,適用於非主鍵列查詢。

哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什麼? 哪些流行的MySQL GUI工具(例如MySQL Workbench,PhpMyAdmin)是什麼? Mar 21, 2025 pm 06:28 PM

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

您如何處理MySQL中的大型數據集? 您如何處理MySQL中的大型數據集? Mar 21, 2025 pm 12:15 PM

文章討論了處理MySQL中大型數據集的策略,包括分區,碎片,索引和查詢優化。

See all articles