聚集函数
|
提示:我们经常需要单列汇总数据,但是不需要把他们检索出来,以便于报表分析,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
输出结果:
|
注意: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语句:
SELECT COUNT(cust_email) AS num_cust FROM Customers
SQL语句分析:
这条语句是对表Customers进行指定行cust_email进行统计,会自动忽略NULL值
输出结果:
1.3 MAX()函数
| 提示:MAX()函数是返回指定列中最大值,此函数必须指定列名 |
SQL语句:
SELECT MAX(prod_price) AS max_price FROM Products
SQL语句分析:
这条语句是获取表Products中指定列prod_price中的最大值
输出结果:
|
注意: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的总和
输出结果:
1.6 DISTINCT和ALL参数
| 提示:DISTINCT参数是获取不相同的值,而ALL是获取所有的值,不过SQL默认就是ALL 不用单独写出来 |
SQL语句:
SELECT DISTINCT(order_num) AS items_ordered FROM OrderItems
SQL语句分析:
这条语句是获取表OrderItems中指定列order_num中不相同的值
输出结果:
|
注意:1.DISTINCT不能作用于COUNT(*),如果指定列名,则DISTINCT只能用于COUNT(),DISTINCT不能用于COUNT(*) 2.DISTINCT可以作用于MAX()和MIN(),但实际上并没用任何用处 |