频道栏目
首页 > 资讯 > SQL Server > 正文

介绍一下什么是SQL的聚集函数?如何利用它们汇总表的数据?

18-06-04        来源:[db:作者]  
收藏   我要投稿

介绍一下什么是SQL的聚集函数?如何利用它们汇总表的数据?

9.1 聚集函数

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

SQL给出了5个聚集函数,见表9-1。这些函数能进行上述检索。与前一章介绍的数据处理函数不同,SQL的聚集函数在各种主要SQL实现中得到了相当一致的支持。

 

表9-1 SQL聚集函数

AVG()函数:计算平均数。eg.SELECT AVG(prod_price) AS avg_price.          同时,还可以计算特定行或列的平均值。          eg.SELECT AVG(prod_price) AS avg_price FROM Products WHERE vend_id='D12';

警告:只用于单个列

AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数.

说明:NULL值

 AVG()函数忽略列值为NULL的行。

COUNT函数:

COUNT()函数有两种使用方式:

1)使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。

 2)使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

SELECT COUNT(*) AS num_cust

FROM Customers;           (返回顾客总数)

SELECT COUNT(cust_email) AS num_cust

FROM Customers;       (只对具有电子邮件地址的客户计数)

MAX() & MIN()函数:

与MAX()一样,MIN()要求指定列名。eg.SELECT MIN(prod_price) AS min_price FROM Products;

 提示:在多个列上进行计算

利用标准的算术操作符,所有聚集函数都可用来执行多个列上的计算,例如下例SUM()函数:

SELECT SUM(item_price*quantity) AS total_price 

FROM OrderItems 

WHERE ordernum 20005;

9.2 聚集不同值

 下面的例子使用AVG()函数返回特定供应商提供的产品的平均价格。它与上面的SELECT语句相同,但使用了DISTINCT参数,因此平均值只考虑各个不同的价格:

SELECT AVG(DISTINCT prod_price) AS avg_price 

FROM Products

WHERE vend_id = 'DLL01';

警告:DISTINCT不能用于COUNT(*)

如果指定列名,则DISTINCT只能用于COUNT()。DISTINCT不能用于COUNT(*)。类似地,DISTINCT必须使用列名,不能用于计算或表达式

9.3 组合聚集函数

实际上,SELECT语句可根据需要包含多个聚集函数。

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;

相关TAG标签
上一篇:MySQL按粒度划分的锁定机制介绍和发生死锁的几种情况及解决方法
下一篇:MySQL入门之介绍下MySQL支持的数据
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站