SQL中的汇总数据(其实是聚集函数)

聚集函数(aggregate  function):对某些行运行的函数,计算并返回一个值,(作用是总计的和总数的)

aggregate [ˈægrɪgət] [ˈæɡrɪɡɪt]
n. 骨料; 合计; 聚集体; 集料(可成混凝土或修路等用的);
adj. 总数的,总计的; 聚合的; [地] 聚成岩的;
vt. 使聚集,使积聚; 总计达;
所以这里的聚集是 “总数的,总计的”  意思


在数据库应用中, 需要汇总表中的数据,而不是实际数据本身,所以返回实际表数据纯属浪费时间和处理资源,我们实际想要的是汇总信息,例如:

1. 确定表中的行数(或者满足某个条件或包含某个特定值的行数)

2.获得表中某些行的和 

3.找出表列的最大值、最小值和平均值


一共有5个聚集函数,

AVG() 返回某列的平均值

COUNT()返回某列的行数

MAX() 返回某列的最大值

MIN() 返回某列的最小值

SUM()返回某列值之和

1. AVG()函数

只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出,但只能用於单个列,为了获得多个列的平均值,必须使用多个AVG()函数,并且这个函数会忽略列值为NULL的行

AVG( [DISTINCT |  ALL]  column)  使用DISTINCT会去重这样算平均数更加严谨科学,否则会有重数计算会有影响。

SELECT  AVG(prod_price)  AS  avg_price

FROM  Products

WHERE  vend_id = "DLL01"

2.COUNT()

此函数进行计数,可确定表中行的数目或符合特定条件的行的数目。有两种使用方式:

(1COUNT( *)对表中行的数目进行计数,不管表列中包含的是空值NULL还是非空值,不管行中各列有什么值。并且不能用DISTINCT

(2)COUNT( [DISTINCT |  ALL]  column)对特定列中具有值得行进行计数,忽略NULL值。使用DISTINCT会去重

3.MAX()和MIN()函数

MAX( [DISTINCT |  ALL]  column)  都会忽略列值为 NULL 的行其实这两个函数有没有 DISTINCT都没有什么卵用。

4.SUM()函数

会返回指定列值的和(总计)也会忽略值为 NULL 的行。

quantity和 item_price为表中的行,SUM()函数中可以有 计算字段

SELECT  SUM(quantity) AS  items_ordered

FROM  OrderItems

WHERE  order_num = 20005;

还有这么使用的

SELECT  SUM(quantity*item_price) AS  total_price   //合计每项物品的quantity*item_price,得出总的订单金额。

FROM  OrderItems

WHERE  order_num = 20005;





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章