聚集函数


提示:我们经常需要单列汇总数据,但是不需要把他们检索出来,以便于报表分析,SQL提供了5个函数。

1.1 常用的聚集函数
常用的聚集函数:

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


1.1 AVG()函数

提示:AVG()函数是对表中行数据进行累加并求得该列的平均值

SQL语句:

SELECT AVG(prod_price) AS avg_price FROM Products

SQL语句分析:

这条语句使用了AVG()函数,获取表Products中列prod_price的平均值,并设别名为avg_price

输出结果:

 

SQL SERVER 入门进阶教程——函数(3)

注意:1.AVG()只能用来获取某一列的平均值,如果需要获取多列的平均值,可以多次使用AVG() 函数。

           2.AVG()函数会忽略列中的NULL值。

1.2 COUNT()函数

提示:COUNT()函数是对表中的行进行计数,可以获取特定或符合要求的行数

注意:COUNT()有两种使用方法

           1.使用COUNT(*)对表中的行进行统计,不管行中是否存在NULL值或是空值

           2.使用COUNT(COLUMN)对特定列中具有的值进行统计,会忽略NULL值

SQL语句:

SELECT COUNT(*) AS num_cust FROM Customers

SQL语句分析:

这条语句是对表Customers进行行统计,不管行中是否有值

输出结果:

SQL SERVER 入门进阶教程——函数(3)

SQL语句:

SELECT COUNT(cust_email) AS num_cust FROM Customers

SQL语句分析:

这条语句是对表Customers进行指定行cust_email进行统计,会自动忽略NULL值

输出结果:

SQL SERVER 入门进阶教程——函数(3)

1.3 MAX()函数

提示:MAX()函数是返回指定列中最大值,此函数必须指定列名

SQL语句:

SELECT MAX(prod_price) AS max_price FROM Products

SQL语句分析:

这条语句是获取表Products中指定列prod_price中的最大值

输出结果:

SQL SERVER 入门进阶教程——函数(3)

注意:1.MAX()函数也可以对非数值使用,如果是日期的话则返回日期最大那个,如果是文本的话DBMS则会返回该列中排序为最后的一行

           2.MAX()函数会忽略列值为NULL的行

1.5 SUM()函数

提示:SUM()函数是返回指定列的总和,也就是各行的值累加起来,这个函数很容易理解

SQL语句:

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

SQL语句分析:

这条语句是获取表OrderItems中指定列quantity中列order_num的值为20005的总和

输出结果:

SQL SERVER 入门进阶教程——函数(3)

1.6 DISTINCT和ALL参数

提示:DISTINCT参数是获取不相同的值,而ALL是获取所有的值,不过SQL默认就是ALL 不用单独写出来

SQL语句:

SELECT DISTINCT(order_num) AS items_ordered FROM OrderItems

SQL语句分析:

这条语句是获取表OrderItems中指定列order_num中不相同的值

输出结果:

SQL SERVER 入门进阶教程——函数(3)

注意:1.DISTINCT不能作用于COUNT(*),如果指定列名,则DISTINCT只能用于COUNT(),DISTINCT不能用于COUNT(*)

           2.DISTINCT可以作用于MAX()和MIN(),但实际上并没用任何用处

 

相关文章: