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

SQL分組函數group by和聚合函數COUNT、MAX、MIN、AVG、SUM是什么以及怎么用

164次閱讀
沒有評論

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

行業資訊    
數據庫    
SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么以及怎么用

自動寫代碼機器人,免費開通

本篇內容主要講解“SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么 / 用法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么 / 用法是什么”吧!

1 分組聚合的原因

SQL 中分組函數和聚合函數之前的文章已經介紹過,單說這兩個函數有可能比較好理解,分組函數就是 group by,聚合函數就是 COUNT、MAX、MIN、AVG、SUM。

SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么以及怎么用

拿上圖中的數據進行解釋,假設按照 product_type 這個字段進行分組,分組之后結果如下圖。

SELECT product_type from productgroup by product_type

SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么以及怎么用

從圖中可以看出被分為了三組,分別為廚房用具、衣服和辦公用品,就相當于對 product_type 這個字段進行了去重,確實 group by 函數有去重的作用。

SELECT DISTINCT product_type from product

假設分組之后,我想看一下價格,也就是 sale_price 這個字段的值,按照如下這個寫法,會報如下錯誤。

SELECT product_type,sale_price from productgroup by product_type

SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么以及怎么用

這是為什么呢?原表按照 product_type 分組之后,廚房用具對應 4 個值,衣服對應 2 個值,辦公用品對應 2 個值,這就是在取 sale_price 這個字段的時候為什么報錯了,一個空格中不能填入多個值,這時候就可以用聚合函數了,比如求和,求平均,求最大最小值,求行數。聚合之后的值就只有一個值了。

SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么以及怎么用

SELECT product_type,sum(sale_price),avg(sale_price),count(sale_price),max(sale_price) from productgroup by product_type

SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么以及怎么用

對于多個字段的分組,其原理是一樣的。從上述中記住兩點:分組去重和分組聚合。

2 distinct 和 group by 去重的區別 Distinct 和 group by 設計時側重點不一樣

distinct 只是為了去重,而 group by 是為了聚合統計的。

兩者都有去重的效果,但是執行的效率不一樣

單個字段去重

–DISTINCTSELECT distinct product_type from product–GROUP BYselect product_type from productGROUP BY product_type

SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么以及怎么用

多個字段去重

–DISTINCTSELECT distinct product_name, product_type from product–GROUP BYselect product_name, product_type from productGROUP BY product_name, product_type

SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么以及怎么用

執行效率

select 列名 1 , 列名 2 from 表名 where 查詢條件 group by 分組類別 having 對分組結果指定條件 order by 列名(desc)limit 數字

SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么以及怎么用

SQL 語言的運行順序,先執行上圖中的第一步,然后再執行 select 子句,最后對結果進行篩選。distinct 是在 select 子句中,而 group by 在第一步中,所以 group by 去重比 distinct 去重在效率上要高。

sql 中聚合函數和分組函數_SQL 選擇計數聚合函數 - 語法示例解釋

sql 中聚合函數和分組函數

The COUNT operator is usually used in combination with a GROUP BY clause. It is one of the SQL“aggregate”functions, which include AVG (average) and SUM.

COUNT 運算符通常與 GROUP BY 子句結合使用。它是 SQL“聚合”功能之一,其中包括 AVG(平均)和 SUM。

This function will count the number of rows and return that count as a column in the result set.

此函數將對行數進行計數,并將該計數作為列返回到結果集中。

Here are examples of what you would use COUNT for:

以下是將 COUNT 用于以下用途的示例:

Counting all rows in a table (no group by required)
計算表中的所有行 (不需要按組)
Counting the totals of subsets of data (requires a Group By section of the statement)
計算數據子集的總數(需要語句的“分組依據”部分)
For reference, here is the current data for all the rows in our example student database.

作為參考,這是示例學生數據庫中所有行的當前數據。

select studentID, FullName, programOfStudy, sat_score from student; — all records with fields of interest
This SQL statement provides a count of all rows. Note that you can give the resulting COUNT column a name using“AS”.

該 SQL 語句提供所有行的計數。請注意,您可以使用“AS”為所得的 COUNT 列命名。

select count(*) AS studentCount from student; — count of all records

Here we get a count of students in each field of study.

在這里,我們得到了每個學習領域的學生人數。

select studentID, FullName, count(*) AS studentCount from the student table with a group by programOfStudy;

Here we get a count of students with the same SAT scores.

在這里,我們得到了具有相同 SAT 分數的學生人數。

select studentID, FullName, count(*) AS studentCount from the student table with a group by sat_score;

Here is an example using the campaign funds table. This is a sum total of the dollars in each transaction and the number of contributions for each political party during the 2016 US Presidential Campaign.

這是使用廣告系列資金表的示例。這是 2016 年美國總統大選期間每筆交易的總金額和每個政黨的捐款額。

select Specific_Party, Election_Year, format(sum(Total_$),2) AS contribution$Total, count(*) AS numberOfContributions 
from combined_party_data
group by Specific_Party,Election_Year
having Election_Year = 2021;

As with all of these things there is much more to it, so please see the manual for your database manager and have fun trying different tests yourself.

關于所有這些事情,還有很多事情要做,所以請參閱數據庫管理員手冊,并嘗試自己進行不同的測試,這很有趣。

sql 語句聚合函數和分組操作的注意事項

group by 可以根據給定數據列的每個成員對查詢結果進行分組統計, 最終得到一個匯總表。

group by 幾個比較重要的約束:

(1)select 字句中的列名和 having 或 where 中的列名必須為分組列或列函數. 列函數對于 group by 字句定義的每個組返回一個結果
(2)group by 一般和聚合函數一使用才有意義, 比如 count,sum,avg 等, 使用 group by 的兩個要素:
(3) 出現在 select 后面的字段, 要么是聚合函數中的, 要么是 group by 中的.
(4)要篩選結果, 可以先使用 where 再用 group by 或者先用 group by 再用 having

第 (4) 項根據各個數據庫不同不一定都能適用,因此最好不要這樣用,老老實實用 having

SQL 聚合函數和分組數據語法及概述

(一)聚合函數是指對列上的數據進行操作,起到統計的作用。前面的函數都是最一行記錄進行操作得到的數據,包括前面的日期函數、數學函數、字符函數、轉換函數以及條件判斷函數。

常用的聚合函數有:count、sum、avg、max、min。這 5 個函數個起到統計記錄數、求和、求平均值、求最大值、最小值的作用。

Count:count 函數對查詢的數據統計記錄數量,這個函數不對字段值為 NULL 的值進行統計,也就是說某個查詢的字段有 NULL 值,則 NULL 值的數量會被減除,這樣就可以不對 NULL 設置查詢條件了。
如果要對 NULL 值設置查詢,則可以用 WHERE 字段 IS NULL 來作為條件。
Sum:sum 函數求和,只能對數值型數據操作,也會忽略 NULL 值。舉例:
Select sum(考試成績) as 計算機總成績
From score
Where 課號 in (select 課號 from course where 課名 =”計算機”)
Avg:求平均值,參數也必須為數值型字段名或者結果為數值的表達式。
Max、min:這兩個函數求最大值和最小值,但是不能放到 WHERER 中以及 SELECT 子句的字段名位置上。
例:select max(x1) from y where max(x2) in(select…) 錯誤的語法。
Select x1 from y where x2=max(x3) 錯誤的語法。
select max(x1) from y where x2) in(select max(x2,)…) 正確。
注:5 個函數都可以使用 distinct 統計不重復的值:
Select count(distinct(課程)) as 課程數量 from 課程表
Access 和 mysql 不能將 distinct 放置到參數中,解決方法:查詢 distinct 保存為新表 INTO 語句,然后再使用 count。

(二)數據分組是指將數據表中的數據按照指定字段的不同值分為很多組,使用 group by 子句進行操作。

Group by 通常不直接查詢所有字段并且分組,group by 和 select 后分組字段和查詢字段通常一致。因為 select * from y group by x 會產生錯誤,通常對某個字段分組并且利用聚合函數計算分組得到的值。
聚合函數和分組的組合并設置查詢條件:可以對一個字段分組并且設定條件,這樣得到的結果將會是計算分組并且滿足條件的值。例:
查詢各個所屬院系中所有男生的值:
Select 所屬院系,count(*) as 男生人數 from student where 性別 = 男 group by 所屬院系
查詢直方圖:利用 replicate()函數,將分組得到的數據作為次數,重復一個設置的符號。
排序查詢結果:order by 語句,ASC、DESC 位于 group by 之后
Case 表達式和 group by 的結合:
Select 所屬院系,count(case
When 性別 = 男 then 1
Else null
End ) as 男生人數,
count(case
When 性別 = 女 then 1
Else null
End ) as 女生人數
From student group by 所屬院系
Hanving 子句設置分組 group by 的分組查詢條件。
Having 子句總是和 group by 子句結合使用,依賴于分組,可以在 having 中使用聚合函數;where 也可以設定條件,但是不依賴于分組的字段,但是不能使用聚合函數。
Select 學號,sum(考試成績) as 考試總成績 from score group by 學號 having sum(考試成績) 400 order by 考試總成績 desc

到此,相信大家對“SQL 分組函數 group by 和聚合函數 COUNT、MAX、MIN、AVG、SUM 是什么 / 用法是什么”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向 AI 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計5241字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 留坝县| 视频| 南江县| 普兰县| 驻马店市| 太仆寺旗| 宜君县| 望都县| 石泉县| 景东| 阿图什市| 根河市| 安国市| 巴林左旗| 大兴区| 博客| 遵义市| 广安市| 临清市| 伊春市| 青海省| 宁阳县| 体育| 杭锦旗| 十堰市| 永德县| 锦州市| 康平县| 临桂县| 铜鼓县| 城步| 宣汉县| 乌拉特中旗| 宁城县| 龙州县| 鄄城县| 巴青县| 洛阳市| 泸溪县| 华容县| 徐闻县|