0


mysql基础(5)

回顾一下之前所学的

1函数部分(sql语言+数学函数+字符串函数+控制流函数)

2.控制流函数

     ---------if  支持嵌套,不建议多层 (了解 ifnull 和nullif)

     ---------case when (sql语句)

内容一:聚合(统计函数)函数(重点)---多行函数

需求: 对数据进行统计

****概念:单行函数(函数作用于1行--每一次执行都作用一行) ****

+多行函数(一次执行需要作用于对多行 )==》需求

求和 : sum 平均数:avg 最大值:max 最小值:min 计算行数:count

注意: 聚合函数之间不支持嵌套的!!

例子1:求工资平均数

select avg(salary) from worker;

# 注意:不要把 Null 认为0 NULL 自动去掉 不计入分母

例子2 : 统计行数(记录数)

三种表达方式

count(*) count(列字段) count(distinct 字段)

count(*) 计算记录总数 包含null

count(列字段) 计算记录总数 不包含null

count(distinct 字段) 先去重 再计算记录总数 不包含null

select count(*),count(salary),count(DISTINCT salary) from worker;

注意 空格和null 不一样的

空格计入记录总数 null 不会

select count(' ');

select count(null);

聚合函数之间仍然支持四则运算

例子3 sum函数

a商品和b商品的总销量

说明: 行记录相加

select
sum(sales_a) as "a商品销量",
sum(sales_b) as "b商品销量",
sum(sales_a)+sum(sales_b) as "总销量",
from  jw03_sale;

内容二:分组(group by)+聚合函数一起使用(重点!)

分组的原理:

例子:查询每一种 工作类型 最高工资 最低工资 工作人数 工资总和 平均工资

思路: 判定分组的字段

select type,max(salary),min(salary),count(*),sum(salary),avg(salary)

from worker GROUP BY type;

结论: 分组的时候 select 只能是聚合列(分组列)=整体信息

例子2:查看小组待遇最好=解析需求=》 分组后数据 按照总金额排序

select type,sum(salary) as jwsum

from worker GROUP BY type order by jwsum ;

例子3 :只有特殊排序情况 分组的字段列和排序列 是同一列!!

分组的关键字 和排序关键字进行合并

select type,sum(salary) as jwsum

from worker GROUP BY type order by type desc;

等价于

select type,sum(salary) as jwsum

from worker GROUP BY type desc;

例子3 分组后条件过滤

分组前where 分组后having

查询 总薪资超过 4000 小组名称

select type,sum(salary) as jwsum

from worker GROUP BY type having jwsum>4000 order by jwsum desc;

创建一个业务表 给大家讲解的细致一点

例子1: 每个省份 店铺总销量

select province,sum(sales) as "总销量" from jw05_shopsale

group by province;

每个城市

select province,city, sum(sales) as "总销量" from jw05_shopsale

group by province,city;

例子2:店铺销量(分组后的条件)超过10的省份

select province, sum(sales) as jwsum from jw05_shopsale

group by province having jwsum >10;

魔鬼细节

为什么 having后面可以使用 别名 但是group by 不可以使用别名?

答: group by执行顺序 先组内聚合运算 然后才产生别名,having一定是分组后的

条件可以使用别名

标签: 大数据 mysql sql

本文转载自: https://blog.csdn.net/weixin_60414019/article/details/125510234
版权归原作者 Vlepro 所有, 如有侵权,请联系我们删除。

“mysql基础(5)”的评论:

还没有评论