<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
用於彙總的函數。
COUNT,計算表中的行數(記錄數)。
計算全部資料的行數:
SELECT COUNT(*) FROM Product;
NULL之外的資料行數:
SELECT COUNT(purchase_price) FROM Product;
結果如下圖。
對於一個含NULL的表:
將列名作為引數,得到NULL之外的資料行數;將星號作為引數,得到所有資料的行數(包含NULL)。
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;
AVG,求表中的數值列的資料的平均值。
SELECT AVG(sale_price) FROM Product;
對於列裡面資料有NULL的,會事先去掉NULL再計算。如AVG(purchase_price),分母是6而不是8。
SELECT AVG(sale_price), AVG(purchase_price) FROM Product;
MAX,求表中任意列資料最大值。
MIN,求表中任意列資料最小值。
SELECT MAX(sale_price), MIN(purchase_price) FROM Product;
SELECT MAX(regist_date), MIN(regist_date) FROM Product;
計算去除重複資料後的資料行數:
DISTINCT要寫在括號中,目的是在計算行數前先去重。
SELECT COUNT(DISTINCT product_type) FROM Product;
所有的聚合函數的引數中都可以使用DISTINCT。
下面這個SUM(DISTINCT sale_price),先把sale_price裡面的資料去重,然後再求和。
SELECT SUM(sale_price), SUM(DISTINCT sale_price) FROM Product;
對錶分組:前面使用聚合函數,對錶中所有資料進行彙總處理。
還可以先把表分成幾組,再進行彙總處理。
格式:
SELECT <列名1>,<列名2>,... FROM <表名> GROUP BY <列名1>,<列名2>,...;
按商品種類統計資料:
使用GROUP BY product_type,會按商品種類對錶切分。
GROUP BY指定的列,稱為聚合鍵、分組列。
SELECT product_type, COUNT(*) FROM Product GROUP BY product_type;
按商品種類對錶切分,得到以商品種類為分界的三組資料,然後,計算每種商品資料行數。
如果聚合鍵裡面含有NULL,也將NULL作為一組特定資料。
SELECT purchase_price, COUNT(*) FROM Product GROUP BY purchase_price;
如果加上WHERE子句,格式如下:
SELECT <列名1>,<列名2>,... FROM <表名> WHERE GROUP BY <列名1>,<列名2>,...;
先根據WHERE子句指定的條件進行篩選,然後再彙總處理。
下面語句的執行順序:FROM、WHERE、GROUP BY、SELECT。
SELECT purchase_price, COUNT(*) FROM Product WHERE product_type = '衣服' GROUP BY purchase_price;
使用聚合函數和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子句裡面能使用聚合函數。
使用GROPU BY子句,得到將表分組後的結果。
使用HAVING子句,指定分組的條件,從分組後的結果裡面選取特定的組。
格式:
SELECT <列名1>,<列名2>,... FROM <表名> WHERE GROUP BY <列名1>,<列名2>,...; HAVING <分組結果對應的條件>
下面這個,選出包含兩行資料的組。
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子句中,能用的三種元素:常數、聚合函數、GROPU BY子句指定的列名(聚合鍵)。
聚合鍵所對應的一些條件,可以寫在HAVING子句中,也可寫在WHERE子句中。
下面兩段程式碼結果都一樣。
HAVING子句用來指定組的條件。WHERE子句用來指定資料行的條件。聚合鍵所對應的一些條件還是寫在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子句,可以對查詢結果進行排序。
格式:
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的有兩個資料,這兩個資料的順序是隨機的。
可以再新增一個排序鍵,對這兩個資料排序。
下面就實現了,價格相同時,按照商品編號升序排序。
多個排序鍵時,優先使用左邊的鍵,該列存在相同值,再參考右邊的鍵。
SELECT product_id, product_name, sale_price, purchase_price FROM Product ORDER BY sale_price, product_id;
如果,排序鍵裡面有資料是NULL,NULL會在結果的開頭或結尾顯示。
SELECT product_id, product_name, sale_price, purchase_price FROM Product ORDER BY purchase_price;
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 Product ORDER BY sp, id;
ORDER BY子句可以使用在表裡,但不在SELECT子句裡的列。
SELECT product_name, sale_price, purchase_price FROM Product ORDER BY product_id;
ORDER BY子句裡面可以使用聚合函數。
SELECT product_type, COUNT(*) FROM Product GROUP BY product_type ORDER BY COUNT(*);
以上就是PostgreSQL聚合函數的分組排序使用範例的詳細內容,更多關於PostgreSQL聚合函數分組排序的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45