久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

group by指的是什么

168次閱讀
沒有評論

共計 2860 個字符,預計需要花費 8 分鐘才能閱讀完成。

這篇文章主要講解了“group by 指的是什么”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“group by 指的是什么”吧!

group by 的意思為“分組查詢”,可以理解為“根據(jù)(by)一定的規(guī)則進行分組(Group)”;作用是通過一定的規(guī)則將一個數(shù)據(jù)集劃分成若干個小的區(qū)域,然后針對若干個小區(qū)域進行數(shù)據(jù)處理。在 MySQL 中,GROUP BY 是 SELECT 語句的可選子句,用于根據(jù)一個或多個字段對查詢結(jié)果進行分組,它減少了結(jié)果集中的行數(shù)。

group by 的意思為“分組查詢”。

Group By 語句從英文的字面意義上理解就是“根據(jù) (by) 一定的規(guī)則進行分組(Group)”。它的作用是通過一定的規(guī)則將一個數(shù)據(jù)集劃分成若干個小的區(qū)域,然后針對若干個小區(qū)域進行數(shù)據(jù)處理。

MySQL 使用 GROUP BY 分組查詢

在 MySQL 中,GROUP BY 關(guān)鍵字可以根據(jù)一個或多個字段對查詢結(jié)果進行分組。

GROUP BY 子句通過列或表達式的值將一組行分組為一個小分組的匯總行記錄。GROUP BY 子句為每個分組返回一行。換句話說,它減少了結(jié)果集中的行數(shù)。

經(jīng)常使用 GROUP BY 子句與聚合函數(shù)一起使用,如 SUM,AVG,MAX,MIN 和 COUNT。SELECT 子句中使用聚合函數(shù)來計算有關(guān)每個分組的信息。

GROUP BY 子句是 SELECT 語句的可選子句。下面是 GROUP BY 子句語法:

SELECT 
 c1, c2,..., cn, aggregate_function(ci)
 table
WHERE
 where_conditions
GROUP BY c1 , c2,...,cn;

GROUP BY 子句必須出現(xiàn)在 FROM 和 WHERE 子句之后。在 GROUP BY 關(guān)鍵字之后是一個以逗號分隔的列或表達式的列表,這些是要用作為條件來對行進行分組。

MySQL GROUP BY 示例

1、簡單的 MySQL GROUP BY 示例

我們來看看示例數(shù)據(jù)庫 (yiibaidb) 中的 orders 表,其結(jié)構(gòu)如下所示 –

mysql  desc orders;

假設要將訂單狀態(tài)的值分組到子組中,則要使用 GROUP BY 子句并指定按 status 列來執(zhí)行分組,如下查詢:

SELECT 
 status
 orders
GROUP BY status;

執(zhí)行上面查詢語句,得到以下結(jié)果 –

可以看到,GROUP BY 子句返回狀態(tài) (status) 值是唯一的。它像 DISTINCT 運算符一樣工作,如下面的查詢所示:

SELECT DISTINCT
 status
 orders;

執(zhí)行上面查詢語句,得到以下結(jié)果 –

2、MySQL GROUP BY 與聚合函數(shù)

可使用聚合函數(shù)來執(zhí)行一組行的計算并返回單個值。GROUP BY 子句通常與聚合函數(shù)一起使用以執(zhí)行計算每個分組并返回單個值。

例如,如果想知道每個狀態(tài)中的訂單數(shù),可以使用 COUNT 函數(shù)與 GROUP BY 子句查詢語句,如下所示:

SELECT 
 status, COUNT(*) AS total_number
 orders
GROUP BY status;

執(zhí)行上面查詢語句,得到以下結(jié)果 –

請參閱以下訂單 (orders) 和訂單詳細 (orderdetails) 表,它們的 ER 圖如下所示 –

要按狀態(tài)獲取所有訂單的總金額,可以使用 orderdetails 表連接 orders 表,并使用 SUM 函數(shù)計算總金額。請參閱以下查詢:

SELECT 
 status, SUM(quantityOrdered * priceEach) AS amount
 orders
 INNER JOIN
 orderdetails USING (orderNumber)
GROUP BY status;

執(zhí)行上面查詢,得到以下結(jié)果 –

類似地,以下查詢返回訂單號和每個訂單的總金額。

SELECT 
 orderNumber,
 SUM(quantityOrdered * priceEach) AS total
 orderdetails
GROUP BY orderNumber;

執(zhí)行上面查詢,得到以下結(jié)果 –

3、MySQL GROUP BY 用表達式示例

除了列之外,可以按表達式對行進行分組。以下查詢獲取每年的總銷售額。

SELECT 
 YEAR(orderDate) AS year,
 SUM(quantityOrdered * priceEach) AS total
 orders
 INNER JOIN
 orderdetails USING (orderNumber)
WHERE
 status =  Shipped 
GROUP BY YEAR(orderDate);

執(zhí)行上面查詢,得到以下結(jié)果 –

在這個例子中,我們使用 YEAR 函數(shù)從訂單日期 (orderDate) 中提取年份數(shù)據(jù)。只包括已發(fā)貨 (Shipped) 狀態(tài)的訂單。請注意,SELECT 子句中出現(xiàn)的表達式必須與 GROUP BY 子句中的相同。

MySQL GROUP BY 與 HAVING 子句

可使用 HAVING 子句過濾 GROUP BY 子句返回的分組。以下查詢使用 HAVING 子句來選擇 2013 年以后的年銷售總額。

SELECT 
 YEAR(orderDate) AS year,
 SUM(quantityOrdered * priceEach) AS total
 orders
 INNER JOIN
 orderdetails USING (orderNumber)
WHERE
 status =  Shipped 
GROUP BY year
HAVING year   2013;

執(zhí)行上面查詢,得到以下結(jié)果 –

GROUP BY 子句:MySQL 與標準 SQL

標準 SQL 不允許使用 GROUP BY 子句中的別名,但 MySQL 支持此選項。以下查詢從訂單日期提取年份,并對每年的訂單進行計數(shù)。該 year 用作表達式 YEAR(orderDate)的別名,它也用作 GROUP BY 子句中的別名,此查詢在標準 SQL 中無效。

參考以下查詢 –

SELECT 
 YEAR(orderDate) AS year, COUNT(orderNumber)
 orders
GROUP BY year;

執(zhí)行上面查詢,得到以下結(jié)果 –

MySQL 還允許您以升序或降序 (標準 SQL 不能提供) 對組進行排序。默認順序是升序。例如,如果要按狀態(tài)獲取訂單數(shù)量并按降序?qū)顟B(tài)進行排序,則可以使用帶有 DESC 的 GROUP BY 子句,如下查詢語句:

SELECT 
 status, COUNT(*)
 orders
GROUP BY status DESC;

執(zhí)行上面查詢,得到以下結(jié)果 –

group by 指的是什么

請注意,在 GROUP BY 子句中使用 DESC 以降序?qū)顟B(tài)進行排序。我們還可以在 GROUP BY 子句中明確指定 ASC,按狀態(tài)對分組進行升序排序。

感謝各位的閱讀,以上就是“group by 指的是什么”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對 group by 指的是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-13發(fā)表,共計2860字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 邛崃市| 融水| 礼泉县| 集贤县| 民乐县| 新兴县| 平阴县| 依安县| 乌什县| 鱼台县| 长治县| 正宁县| 肥西县| 托里县| 绩溪县| 宜宾县| 苏尼特左旗| 杨浦区| 万宁市| 屯门区| 秦皇岛市| 内江市| 堆龙德庆县| 石河子市| 芷江| 嵊州市| 龙口市| 襄樊市| 桐柏县| 横峰县| 永新县| 温州市| 怀柔区| 黄大仙区| 红原县| 竹溪县| 方正县| 谢通门县| 莱阳市| 西安市| 中阳县|