统计函数+分组函数
数据库中使用的表(用于对比和验证结果)
统计函数
avg() 求 均值
1. 直接求
select
avg(purchase_price)
from
product;
2. 设置别名存储
select
avg(purchase_price) avg_price
from
product;
3. avg() + where 限制条件求均值
select
avg(purchase_price)
from
product
where
product_type = '办公用品';
注意:
- avg() 只能用于数值的计算
- avg() 忽略了 单元格为 空NULL 的行
count() 用于计数
1. count(*) 对整个表求行数
select
count(*)
from
product;
2. count(col) 对特定的列进行计数 并且忽略 NULL, NULL不参与个数计算
select
count(purchase_price)
from
product;
max() 求 最大值
select
max(purchase_price)
from
product;
min() 求 最小值
select
min(purchase_price)
from
product;
注意:
- max() 和 min() 也会忽略了 NULL
sum() 对 数值进行求和
1. 直接对某一列进行求和
select
sum(sale_price)
from
product;
2. sum() + where() 添加限制进行求和
select
product_type,
sum(sale_price) sale_price_sum
from
product
where
product_type = '办公用品';
分组函数
- 这里的分组函数 要 结合 统计函数 共同使用,可以理解成是对表格进行初筛,然后进行统计
group by + count(*) 对 分组后的每个类别进行计数
select
product_type,
count(*)
from
product
group by
product_type;
group by + sum() 对 分组后的 每个类别 进行 求和
- 举例1:
select
product_type,
sum(sale_price)
from
product
group by
product_type;
2. 举例2
- 在 group by 后面 给出了select 中出现的列。
select
product_type,
product_name,
sum(sale_price)
from
product
group by
product_type,
product_name;
3. 举例3:
- 这里是错误 演示 !!!! 这种统计的结果是不正确的 ,要警惕; 仔细观察 举例2和举例3 ,加以区分
select
product_type,
product_name,
sum(sale_price)
from
product
group by
product_type;
group by + having 对 分组后的数据进行限制
- 对分组加以限制,要用 having 语句!! 过滤分组没有 where 语句!!
- having 语句 用来过滤分组!!在数据分组后进行过滤,是对 分组后的数据进行限制。
- where 语句用来过滤行!!在数据分组前对表进行限制。
举例1:
select
product_type,
product_name,
sum(sale_price)
from
product
where
product_type = '办公用品'
group by
product_type,
product_name
having
product_name = '圆珠笔';
举例2;
select
product_type,
product_name,
sum(sale_price) sum_sale
from
product
where
product_type = '办公用品'
group by
product_type,
product_name
having
sum_sale > 100;