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

PostgreSQL聚合函數(shù)的分組排序使用示例

 更新時間:2022年04月11日 12:37:01   作者:_jym  
這篇文章主要為大家介紹了PostgreSQL聚合函數(shù)的分組排序使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

聚合函數(shù)

用于匯總的函數(shù)。

COUNT

COUNT,計算表中的行數(shù)(記錄數(shù))。

計算全部數(shù)據(jù)的行數(shù):

SELECT COUNT(*)
  FROM Product;

NULL之外的數(shù)據(jù)行數(shù):

SELECT COUNT(purchase_price)
  FROM Product;

結(jié)果如下圖。

在這里插入圖片描述

對于一個含NULL的表:

將列名作為參數(shù),得到NULL之外的數(shù)據(jù)行數(shù);將星號作為參數(shù),得到所有數(shù)據(jù)的行數(shù)(包含NULL)。

SUM、AVG

SUM、AVG函數(shù)只能對數(shù)值類型的列使用。

SUM,求表中的數(shù)值列的數(shù)據(jù)的和。

SELECT SUM(sale_price)
  FROM Product;

purchase_price里面的數(shù)據(jù)有NULL,四則運算中存在NULL,結(jié)果也是NULL,但這里面結(jié)果不是NULL。

這是因為,聚合函數(shù)以列名為參數(shù),計算的時候會排除NULL的數(shù)據(jù)。

SELECT SUM(sale_price), SUM(purchase_price)
  FROM Product;

在這里插入圖片描述

AVG,求表中的數(shù)值列的數(shù)據(jù)的平均值。

SELECT AVG(sale_price)
  FROM Product;

對于列里面數(shù)據(jù)有NULL的,會事先去掉NULL再計算。如AVG(purchase_price),分母是6而不是8。

SELECT AVG(sale_price), AVG(purchase_price)
  FROM Product;

在這里插入圖片描述

MAX、MIN

MAX,求表中任意列數(shù)據(jù)最大值。

MIN,求表中任意列數(shù)據(jù)最小值。

SELECT MAX(sale_price), MIN(purchase_price)
  FROM Product;
SELECT MAX(regist_date), MIN(regist_date)
  FROM Product;

在這里插入圖片描述

聚合函數(shù)+DISTINCT

計算去除重復數(shù)據(jù)后的數(shù)據(jù)行數(shù):

DISTINCT要寫在括號中,目的是在計算行數(shù)前先去重。

SELECT COUNT(DISTINCT product_type)
  FROM Product;

在這里插入圖片描述

所有的聚合函數(shù)的參數(shù)中都可以使用DISTINCT。

下面這個SUM(DISTINCT sale_price),先把sale_price里面的數(shù)據(jù)去重,然后再求和。

SELECT SUM(sale_price), SUM(DISTINCT sale_price)
  FROM Product;

GROUP BY

對表分組:前面使用聚合函數(shù),對表中所有數(shù)據(jù)進行匯總處理。

還可以先把表分成幾組,再進行匯總處理。

格式:

SELECT <列名1>,<列名2>,...
FROM <表名>
GROUP BY <列名1>,<列名2>,...;

按商品種類統(tǒng)計數(shù)據(jù):

使用GROUP BY product_type,會按商品種類對表切分。

GROUP BY指定的列,稱為聚合鍵、分組列。

SELECT product_type, COUNT(*)
  FROM Product
 GROUP BY product_type;

按商品種類對表切分,得到以商品種類為分界的三組數(shù)據(jù),然后,計算每種商品數(shù)據(jù)行數(shù)。

在這里插入圖片描述

如果聚合鍵里面含有NULL,也將NULL作為一組特定數(shù)據(jù)。

SELECT purchase_price, COUNT(*)
  FROM Product
 GROUP BY purchase_price;

在這里插入圖片描述

如果加上WHERE子句,格式如下:

SELECT <列名1>,<列名2>,...
FROM <表名>
WHERE
GROUP BY <列名1>,<列名2>,...;

先根據(jù)WHERE子句指定的條件進行篩選,然后再匯總處理。

下面語句的執(zhí)行順序:FROM、WHERE、GROUP BY、SELECT。

SELECT purchase_price, COUNT(*)
  FROM Product
 WHERE product_type = '衣服'
 GROUP BY purchase_price;

在這里插入圖片描述

使用聚合函數(shù)和GROUP BY時需要注意:

1.SELECT子句中,只能存在三種元素:常數(shù)、聚合函數(shù)、GROPU BY子句指定的列名(聚合鍵)。

使用GROPU BY子句時,SELECT子句中不能出現(xiàn)聚合鍵之外的列名。

2.GROUP BY子句里面不能使用SELECT子句中定義的別名。

這是因為SQL語句在DBMS內(nèi)部先執(zhí)行GROUP BY子句,再執(zhí)行SELECT子句。執(zhí)行GROUP BY子句時候,DBMS還不知道別名代表的是啥,因為別名是在SELECT子句里面定義的。

3.GROUP BY子句執(zhí)行結(jié)果的顯示順序是無序的。

4.只有SELECT子句、HAVING子句、ORDER BY子句里面能使用聚合函數(shù)。

HAVING

使用GROPU BY子句,得到將表分組后的結(jié)果。

使用HAVING子句,指定分組的條件,從分組后的結(jié)果里面選取特定的組。

格式:

SELECT <列名1>,<列名2>,...
FROM <表名>
WHERE
GROUP BY <列名1>,<列名2>,...;
HAVING <分組結(jié)果對應的條件>

下面這個,選出包含兩行數(shù)據(jù)的組。

SELECT product_type, COUNT(*)
  FROM Product
 GROUP BY product_type
HAVING COUNT(*) = 2;

在這里插入圖片描述

下面這個,選出平均值>=2500的組。

SELECT product_type, AVG(sale_price)
  FROM Product
 GROUP BY product_type
HAVING AVG(sale_price) >= 2500;

在這里插入圖片描述

HAVING子句中,能用的三種元素:常數(shù)、聚合函數(shù)、GROPU BY子句指定的列名(聚合鍵)。

聚合鍵所對應的一些條件,可以寫在HAVING子句中,也可寫在WHERE子句中。

下面兩段代碼結(jié)果都一樣。

HAVING子句用來指定組的條件。WHERE子句用來指定數(shù)據(jù)行的條件。聚合鍵所對應的一些條件還是寫在WHERE子句中好點。

SELECT product_type, COUNT(*)
  FROM Product
 GROUP BY product_type
HAVING product_type = '衣服';
SELECT product_type, COUNT(*)
  FROM Product
WHERE product_type = '衣服'
 GROUP BY product_type;

在這里插入圖片描述

ORDER BY

使用ORDER BY子句,可以對查詢結(jié)果進行排序。

格式:

SELECT <列名1>,<列名2>,...
FROM <表名>
ORDER BY <排序基準列1>,<排序基準列2>,...;

ORDER BY子句寫在SELECT語句末尾。

ORDER BY子句里面的列名稱為排序鍵。

使用升序排列,使用ASC關鍵字,省略這個關鍵字,默認也是升序排列。

SELECT product_id, product_name, sale_price, purchase_price
  FROM Product
ORDER BY sale_price;

上面是升序排列,如果想要降序排列,使用DESC關鍵字。

SELECT product_id, product_name, sale_price, purchase_price
  FROM Product
ORDER BY sale_price DESC;

在這里插入圖片描述

上面的排序,sale_price=500的有兩個數(shù)據(jù),這兩個數(shù)據(jù)的順序是隨機的。

可以再添加一個排序鍵,對這兩個數(shù)據(jù)排序。

下面就實現(xiàn)了,價格相同時,按照商品編號升序排序。

多個排序鍵時,優(yōu)先使用左邊的鍵,該列存在相同值,再參考右邊的鍵。

SELECT product_id, product_name, sale_price, purchase_price
  FROM Product
ORDER BY sale_price, product_id;

在這里插入圖片描述

如果,排序鍵里面有數(shù)據(jù)是NULL,NULL會在結(jié)果的開頭或結(jié)尾顯示。

SELECT product_id, product_name, sale_price, purchase_price
  FROM Product
ORDER BY purchase_price;

在這里插入圖片描述

ORDER BY子句里面可以使用SELECT子句中定義的別名。

這是由SQL語句在DBMS內(nèi)部執(zhí)行順序決定的。SELECT子句執(zhí)行順序在ORDER BY前,GROPU BY后。

FROM、WHERE、GROPU BY、HAVING、SELECT、ORDER BY

SELECT product_id AS id, product_name, sale_price AS sp, purchase_price
  FROM Product
ORDER BY sp, id;

在這里插入圖片描述

ORDER BY子句可以使用在表里,但不在SELECT子句里的列。

SELECT product_name, sale_price, purchase_price
  FROM Product
ORDER BY product_id;

ORDER BY子句里面可以使用聚合函數(shù)。

SELECT product_type, COUNT(*)
  FROM Product
 GROUP BY product_type
ORDER BY COUNT(*);

以上就是PostgreSQL聚合函數(shù)的分組排序使用示例的詳細內(nèi)容,更多關于PostgreSQL聚合函數(shù)分組排序的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解PostgreSQL啟動停止命令(重啟)

    詳解PostgreSQL啟動停止命令(重啟)

    這篇文章主要介紹了PostgreSQL啟動停止命令(重啟)的相關資料,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-11-11
  • PostgreSQL與MySQL優(yōu)劣勢比較淺談

    PostgreSQL與MySQL優(yōu)劣勢比較淺談

    這篇文章主要詳細介紹了PostgreSQL與MySQL有哪些優(yōu)劣勢,文中介紹的非常詳細,對于學習有一定的幫助,感興趣的小伙伴可以參考一下
    2023-04-04
  • PostgreSQL將數(shù)據(jù)加載到buffer cache中操作方法

    PostgreSQL將數(shù)據(jù)加載到buffer cache中操作方法

    這篇文章主要介紹了PostgreSQL將數(shù)據(jù)加載到buffer cache中,我們可以使用pg_prewarm插件來將指定的表加載到OS Buffer或者pg shared buffer中,具體操作方法跟隨小編一起看看吧
    2021-04-04
  • 對postgresql日期和時間的比較

    對postgresql日期和時間的比較

    文章介紹了在數(shù)據(jù)庫中處理日期和時間類型時的一些注意事項,包括如何將字符串轉(zhuǎn)換為日期或時間類型,以及在比較時自動轉(zhuǎn)換的情況,作者建議在使用數(shù)據(jù)庫時,根據(jù)具體情況進行適當?shù)念愋娃D(zhuǎn)換,以避免潛在的錯誤
    2025-01-01
  • PostgreSQL 序列綁定字段與不綁定字段的區(qū)別說明

    PostgreSQL 序列綁定字段與不綁定字段的區(qū)別說明

    這篇文章主要介紹了PostgreSQL 序列綁定字段與不綁定字段的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PostgreSQL 自定義自動類型轉(zhuǎn)換操作(CAST)

    PostgreSQL 自定義自動類型轉(zhuǎn)換操作(CAST)

    這篇文章主要介紹了PostgreSQL 自定義自動類型轉(zhuǎn)換操作(CAST),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgresql 日期查詢最全整理

    postgresql 日期查詢最全整理

    這篇文章主要介紹了postgresql 日期查詢最全整理,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • PostgreSQL數(shù)據(jù)庫備份還原全攻略

    PostgreSQL數(shù)據(jù)庫備份還原全攻略

    本文主要介紹邏輯備份和連續(xù)歸檔方式的備份及還原,文件系統(tǒng)級備份由于比較簡單,這里不在贅述,以下操作使用的數(shù)據(jù)庫版本為PostgreSQL 12.5,不同的數(shù)據(jù)庫版本在進行連續(xù)歸檔操作時會有細微差異,需要的朋友可以參考下
    2024-04-04
  • 淺析postgresql 數(shù)據(jù)庫 TimescaleDB 修改分區(qū)時間范圍

    淺析postgresql 數(shù)據(jù)庫 TimescaleDB 修改分區(qū)時間范圍

    這篇文章主要介紹了淺析postgresql 數(shù)據(jù)庫 TimescaleDB 修改分區(qū)時間范圍,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • PostgreSQL 如何查找需要收集的vacuum 表信息

    PostgreSQL 如何查找需要收集的vacuum 表信息

    這篇文章主要介紹了PostgreSQL 如何查找需要收集的vacuum 表信息,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論

禹城市| 佛学| 普洱| 林西县| 正镶白旗| 新晃| 高安市| 兴海县| 郑州市| 汶川县| 哈密市| 闽侯县| 建始县| 延长县| 大化| 北京市| 防城港市| 平陆县| 开化县| 西华县| 新郑市| 万源市| 弥渡县| 鹤岗市| 双江| 乾安县| 阿拉善左旗| 长海县| 冀州市| 乳源| 平远县| 犍为县| 马龙县| 宾阳县| 万源市| 富锦市| 五家渠市| 新丰县| 土默特左旗| 大石桥市| 称多县|