1. 程式人生 > 其它 >【SQL必知必會】第9課 彙總資料

【SQL必知必會】第9課 彙總資料

9.1 聚類函式

 

 

9.1.1 AVG()函式

計算產品的平均價格

1 -- 計算產品的平均價格
2 SELECT AVG(prod_price) AS avg_price
3 FROM Products;

 

 

 

 

 

 


 AVG()也可以用來確定特定列或行的平均值。

-- AVG()也可以用來確定特定列或行的平均值。
SELECT AVG(prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';

/*
注意:只用於單個列
    AVG()只用來確定特定數值列的平均值且列名必須作為函式引數給出。
    為了獲得多個列的平均值必須使用多個AVG()函式。
*/

 

 

 

 


 

9.1.2 COUNT()函式

兩種方式,有“*” 和 “(某一列)”

“*” , 則統計時會包括NULL

返回顧客的個數

-- 返回顧客的個數
SELECT COUNT(*) AS num_cust
FROM Customers;

 

 

 

 

  

“(某一列)”,統計時不會包括NULL

-- 返回顧客中有郵箱的個數
SELECT COUNT(cust_email) AS num_cust
FROM Customers;

9.1.3 MAX()函式

產品中價格最高

-- 產品中價格最高
SELECT MAX(prod_price) AS
max_price FROM Products; -- NULL值 運算時 不包括在裡面,原因是NULL不是值!

 

 

 


9.1.4 MIN()函式

產品中價格最低

-- 產品中價格最低
SELECT MIN(prod_price) AS min_price
FROM Products;
-- NULL值 運算時 不包括在裡面,原因是NULL不是值!

 


9.1.5 SUM()函式

所有物品數量之和

SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;

/*
函式SUM(quantity)返回訂單中所有物品數量之和,
WHERE子句保證只統計某個物品訂單中的物品。
*/

 

SUM()也可以用來合計,單價 * 數量 = 總價

/*
SUM()也可以用來合計,單價 * 數量 = 總價
*/
SELECT SUM(item_price*quantity) AS total_price
FROM OrderItems
WHERE order_num = 20005;

/*
提示:
1、在多個列上進行計算:所有聚集函式都可用來執行多個列上的計算。
2、NULL值:SUM()函式忽略列值為NULL的行。
*/

 

 


 

9.2 聚集不同值( ALL | DISTINCT )

 

 

排除 有多個物品具有相同的較低價格。

-- 排除 有多個物品具有相同的較低價格。
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';

 

 

 

 

9.3 組合聚集函式

返回4個值Products表中物品的數目(產品價格的最高值、最低值以及平均值)。

SELECT COUNT(*) AS num_items,
    MIN(prod_price) AS price_min,
    MAX(prod_price) AS price_max,
    AVG(prod_price) AS price_avg
FROM Products;

--單條SELECT語句執行了4個聚集計算,
--返回4個值Products表中物品的數目(產品價格的最高值、最低值以及平均值)。