SQL使用聚集函数实现对数据的汇总操作

117 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第33天,点击查看活动详情

汇总数据

聚集函数

聚集函数:运行在行组上,计算和返回单个值的函数

SQL聚集函数

函数说明
AVG()返回某列的平均值
COUNT()返回某列的行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列值之和

AVG函数

例:返回products表中所有产品的平均价格:

SELECT  AVG(prod_price) AS avg_price
FROM products;

xn_2022-08-29_09-18-02

🖌AVG函数忽略列值为NULL的行

COUNT函数

确定表中行的数目或符合特定条件的行的数目。

例:返回customers表中客户的总数

SELECT COUNT(*) AS num_cust
FROM customers;

xn_2022-08-29_09-26-27

例:只对具有电子邮件的客户计数

SELECT COUNT(cust_email) AS num_cust
FROM customers;

xn_2022-08-29_09-28-48

MAX函数

SELECT MAX(prod_price) AS max_price
FROM products;

xn_2022-08-29_09-30-44

🦄用于文本数据时,如果数据按相应的列排序,则max返回最后一行。

🗡MAX函数忽略列值为NULL的行

MIN函数

MIN函数与MAX函数正好相反

SUM函数

sum用来返回指定列值的和

例:检索所订购的物品的总数。

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

xn_2022-08-29_09-38-22

SUM还可以与之前的计算字段进行联动

例:求总的订单金额

SELECT SUM(item_price*quantity) AS total_price
FROM orderitems
WHERE order_num = 20005;

xn_2022-08-29_09-41-51

聚集不同值

⚠️下面介绍聚集函数的DISTINCT的使用,mysql4.x是不能正常使用的。

SELECT AVG(DISTINCT prod_price) AS avg_price
FROM products
WHERE vend_id = 1003;

xn_2022-08-29_09-49-49

📅DISTINCT不能用于COUNT(*)。

组合聚集函数

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;

xn_2022-08-29_09-55-51