欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

汇总数据

程序员文章站 2022-04-15 15:33:37
-- 聚集函数(方便分析和报表生成,其实也就是进行简单的统计学的处理,不需要返回原表来浪费时间)/* 比如:1.确定表中某些行数(或者满足某个条件或包含某个特定值的行数) 2.获得表中某些行的和 3.找出表列(或所有行或某些特定的行)的最大值、最小值、平均值 (在各种主要SQL实现中得到了相当一致的 ......

-- 聚集函数(方便分析和报表生成,其实也就是进行简单的统计学的处理,不需要返回原表来浪费时间)
/*
比如:
1.确定表中某些行数(或者满足某个条件或包含某个特定值的行数)
2.获得表中某些行的和
3.找出表列(或所有行或某些特定的行)的最大值、最小值、平均值
(在各种主要sql实现中得到了相当一致的支持)
特点:对某些行运行的函数,计算并返回一个值
sql聚集函数:
avg() 返回某列的平均值
count() 返回某列的行数
max() 返回某列的最大值
min() 返回某列的最小值
sum() 返回某列值之和
*/

-- avg()函数
/* 计算平均值,可以返回所有列的平均值,也可以返回特定列或行的平均值*/
select avg(prod_price) as avg_price
from products;

汇总数据

#返回products表中所有产品的平均价格 

#返回特定供应商所提*品的平均价格
select avg(prod_price) as avg_price
from products
where vend_id = 'dll01';

汇总数据

#avg()只能用于单个列,列名是函数的参数,对于多个列则要用多个avg()
#avg()函数忽略列值为null的行

-- count()函数
/*count()确定表中行的数目或符合特定条件的行的数目
有两种使用方式:
1.使用count(*)对表中行的数目进行计数,不管表列中包含的是空值(null)还是非空值
2.count(column)对特定列中具有的值的行进行计数,忽略null值*/

select count(*) as num_cust
from customers;#返回customers表中顾客的总数

汇总数据

-- 只对具有电子邮件地址的客户计数
select count(cust_email) as num_cust
from customers;

汇总数据

# 注意count()指定列名,则忽略为空的行,使用星号*,则不忽略。

-- max()返回指定列中的最大值(要求指定列名)
select max(prod_price) as max_price
from products;

汇总数据

/* max()一般用来找出最大的数值或日期值,但是也可以用来返回任意列中的最大值,在文本列中返回该列排序后的最后一行
max()函数忽略列值为null的行*/

-- min()函数(返回指定列的最小值)(要求指定列)
select min(prod_price) as min_price
from products;

汇总数据

 

/* min()一般用来找出最小的数值或日期值,但是也可以用来返回任意列中的最小值,在文本列中返回该列排序后的最前面的行
min()函数忽略列值为null的行*/

-- sum()函数 (用来返回指定列值的和)
select sum(quantity) as items_ordered
from orderitems
where order_num = 20005;

汇总数据

-- sum()也可以用来合计计算值,得到总的订单金额
select sum(item_price*quantity) as total_price
from orderitems
where order_num = 20005;

汇总数据

#sum()函数忽略列值为null的行 

-- 聚集不同值
/* avg() count() max() min() sum()都可以如下使用
1.对所有行执行计算(默认all参数)
2.只包含不同的值,指定distinct参数,去重 */
select avg(distinct prod_price) as avg_price
from products
where vend_id = 'dll01';

汇总数据

/* 再次强调distinct后面必须使用列名,不能用于count(*)
distinct用于min()和max()没有意义 */

-- 组合聚集函数
#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;

汇总数据

#取别名时不要使用表中实际的列名,可能会产生模糊的错误信息