91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PostgreSQL聚合函數的分組排序怎么使用

發布時間:2022-04-11 15:31:35 來源:億速云 閱讀:470 作者:iii 欄目:開發技術

本篇內容介紹了“PostgreSQL聚合函數的分組排序怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

聚合函數

用于匯總的函數。

COUNT

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

計算全部數據的行數:

SELECT COUNT(*)
  FROM Product;

NULL之外的數據行數:

SELECT COUNT(purchase_price)  FROM Product;

結果如下圖。

PostgreSQL聚合函數的分組排序怎么使用

對于一個含NULL的表:

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

SUM、AVG

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

SUM,求表中的數值列的數據的和。

SELECT SUM(sale_price)  FROM Product;

purchase_price里面的數據有NULL,四則運算中存在NULL,結果也是NULL,但這里面結果不是NULL。

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

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

PostgreSQL聚合函數的分組排序怎么使用

AVG,求表中的數值列的數據的平均值。

SELECT AVG(sale_price)  FROM Product;

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

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

PostgreSQL聚合函數的分組排序怎么使用

MAX、MIN

MAX,求表中任意列數據最大值。

MIN,求表中任意列數據最小值。

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

PostgreSQL聚合函數的分組排序怎么使用

聚合函數+DISTINCT

計算去除重復數據后的數據行數:

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

SELECT COUNT(DISTINCT product_type)  FROM Product;

PostgreSQL聚合函數的分組排序怎么使用

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

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

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

GROUP BY

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

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

格式:

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

按商品種類統計數據:

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

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

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

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

PostgreSQL聚合函數的分組排序怎么使用

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

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

PostgreSQL聚合函數的分組排序怎么使用

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

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

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

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

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

PostgreSQL聚合函數的分組排序怎么使用

使用聚合函數和GROUP BY時需要注意:

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

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

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

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

3.GROUP BY子句執行結果的顯示順序是無序的。

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

HAVING

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

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

格式:

SELECT <列名1>,<列名2>,...FROM <表名>WHEREGROUP BY <列名1>,<列名2>,...;HAVING <分組結果對應的條件>

下面這個,選出包含兩行數據的組。

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

PostgreSQL聚合函數的分組排序怎么使用

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

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

PostgreSQL聚合函數的分組排序怎么使用

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

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

下面兩段代碼結果都一樣。

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

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

PostgreSQL聚合函數的分組排序怎么使用

ORDER BY

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

格式:

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

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

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

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

SELECT product_id, product_name, sale_price, purchase_price  FROM ProductORDER BY sale_price;

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

SELECT product_id, product_name, sale_price, purchase_price  FROM ProductORDER BY sale_price DESC;

PostgreSQL聚合函數的分組排序怎么使用

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

可以再添加一個排序鍵,對這兩個數據排序。

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

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

SELECT product_id, product_name, sale_price, purchase_price  FROM ProductORDER BY sale_price, product_id;

PostgreSQL聚合函數的分組排序怎么使用

如果,排序鍵里面有數據是NULL,NULL會在結果的開頭或結尾顯示。

SELECT product_id, product_name, sale_price, purchase_price  FROM ProductORDER BY purchase_price;

PostgreSQL聚合函數的分組排序怎么使用

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

這是由SQL語句在DBMS內部執行順序決定的。SELECT子句執行順序在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 ProductORDER BY sp, id;

PostgreSQL聚合函數的分組排序怎么使用

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

SELECT product_name, sale_price, purchase_price  FROM ProductORDER BY product_id;

ORDER BY子句里面可以使用聚合函數。

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

“PostgreSQL聚合函數的分組排序怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泰兴市| 公主岭市| 龙川县| 奉贤区| 那坡县| 淮阳县| 龙游县| 三河市| 镇远县| 万荣县| 衡阳市| 武安市| 炎陵县| 横山县| 平谷区| 当涂县| 宜丰县| 焉耆| 中方县| 麻阳| 张家川| 海伦市| 新建县| 天长市| 临西县| 隆尧县| 永清县| 普洱| 永顺县| 平原县| 嵊州市| 方正县| 将乐县| 乌审旗| 甘洛县| 青田县| 左贡县| 汝阳县| 华阴市| 塔河县| 沂水县|