聚集函数只是汇总数据而不用把它们实际检索出来,运行在行组上,计算和返回单个值的函数。
SQL语句: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;
1) AVG()函数
AVG()通过对表中行数计数并计算特定列值之后,求得该列的平均值,它既可以用来返回所有列的平均值,也可以用来返回特定列或行的平均值。
示例1:返回products表中所有产品的平均价格
SQL语句:SELECT AVG(prod_price) AS avg_price FROM products;
示例2:返回特定供应商所提供的产品平均价格
SQL语句:SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id=1003;
示例3:返回特定供应商提供的产品的平均价格,平均值只考虑各个不同的价格
SQL语句:SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id=1003;
注意:AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数,另外DISTINCT用于聚集函数时,必须指定列名,否则报错。
(2) COUNT()函数
COUNT()函数用于计数,可利用此函数确定表中行的数目或符合条件的行的数目。
使用COUNT(column)对特定列中具有值的行进行计数,则指定列的值为空的行被COUNT()函数忽略,但如果使用COUNT(*)对表中行的数目进行计数,则不忽略。
示例1:返回customers表中客户的总数
SQL语句:SELECT COUNT(*) AS num_cust FROM customers;
示例2:只对具有电子邮件地址的客户计数
SQL语句:SELECT COUNT(cust_email) AS num_cust FROM customers;
(3) MAX()函数
MAX()函数返回指定列中的最大值,函数需要指定列名,并忽略列值为NULL的行。
示例:返回products表中最贵的物品的价格
SQL语句:SELECT MAX(prod_price) AS max_price FROM products;
(4) MIN()函数
MIN()函数功能与MAX()函数功能相反,它返回指定列的最小值,也需要指定列名。
示例:返回products表中最便宜物品的价格
SQL语句:SELECT MIN(prod_price) AS min_price FROM products;
(5) SUM()函数
SUM()函数用来返回指定列值的和,即总计。
示例1:检索物品订单号为20005的所订购物品的总量
SQL语句:SELECT SUM(quantity) AS items_ordered FROM orderitems WHERE order_num = 20005;
示例2:统计物品订单号20005中所有物品的订单总额(单价*数量)
SQL语句:SELECT SUM(item_price*quantity) AS total_price FROM orderitems WHERE order_num=20005;