共計 1958 個字符,預計需要花費 5 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
今天就跟大家聊聊有關如何在數據庫中使用 group by 方法,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
Group By
概念
Group By 語句從英文的字面意義上理解就是“根據 (by) 一定的規則進行分組 (Group)”。
作用:通過一定的規則將一個數據集劃分成若干個小的區域,然后針對若干個小區域進行數據處理。
注意:group by 是先排序后分組!
語法
SELECT expression1, expression2, ... expression_n,
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n
[ORDER BY expression [ ASC | DESC ]];
語法說明
expression1,expression2,… expression_n
表達式未封裝在聚合函數中,必須包含在 SQL 語句末尾的 GROUP BY 子句中。
aggregate_function
這是一個聚合函數,例如 SUM,COUNT,MIN,MAX 或 AVG 函數。
aggregate_expression
這是將使用 aggregate_function 的列或表達式。
tables
您希望從中檢索記錄的表。FROM 子句中必須至少列出一個表。
where
可選的。這些是要選擇的記錄必須滿足的條件。
ORDER BY 表達式
可選的。用于對結果集中的記錄進行排序的表達式。如果提供了多個表達式,則值應以逗號分隔。
ASC
可選的。ASC 按表達式按升序對結果集進行排序。如果沒有修飾符是提供者,則這是默認行為。
DESC
可選的。DESC 按表達式按降序對結果集進行排序。
常用聚合函數
count() 計數
sum() 求和
avg() 平均數
max() 最大值
min() 最小值
舉例
我們以下面兩張表舉例:
學生表(Student)
IDStudentNameStudentClassID1 小明 12 小紅 23 小蘭 34 小呂 25 小梓 1
班級表(Class)
ClassIDClassName1 軟件一班 2 軟件二班 3 軟件三班
計算每個班都有多少學生?
SELECT cl.ClassName,COUNT(stu.StudentClassID) AS studentNum
FROM student stu LEFT JOIN class cl ON stu.StudentClassID = cl.ClassID
GROUP BY cl.ClassName;
計算結果:
ClassNameStudentName 軟件一班 2 軟件二班 2 軟件三班 1
HAVING
HAVING 語句通常與 GROUP BY 語句聯合使用,用來過濾由 GROUP BY 語句返回的記錄集。
HAVING 語句的存在彌補了 WHERE 關鍵字不能與聚合函數聯合使用的不足。
通俗的說:WHERE 過濾行,HAVING 過濾組
語法
SELECT expression1, expression2, ... expression_n,
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n
語法說明
HAVING condition 這是另一個條件,僅應用于聚合結果以限制返回行的組。只有那些條件評估為 TRUE 的組才會包含在結果集中。
舉例
采用上面兩張數據表
查詢學生人數大于 2 人的班級?
SELECT cl.ClassName,COUNT(stu.StudentClassID) AS studentNum
FROM student stu LEFT JOIN class cl ON stu.StudentClassID = cl.ClassID
GROUP BY cl.ClassName
HAVING COUNT(stu.StudentClassID)
計算結果:
ClassNameStudentName 軟件一班 2 軟件二班 2
小結
當 group by 與聚合函數配合使用時,功能為分組后計算
當 group by 與 having 配合使用時,功能為分組后過濾,獲得滿足條件的分組的返回結果。
having 與 where 區別:where 過濾行,having 過濾組
看完上述內容,你們對如何在數據庫中使用 group by 方法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。
向 AI 問一下細節