MySQL排序与分组
Posted Python数据分析之旅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL排序与分组相关的知识,希望对你有一定的参考价值。
一.MySQL排序
#查看一下我们数据表
select * from xse;
#1.单列排序,我们按照sale_date进行数据排序
select * from xse order by sale_date;
#1.单列排序,我们按照sale_date进行数据排序
select * from xse order by sale_date;
#2.多列排序,我们按照sale_date,num desc进行数据排序
select * from xse order by sales_A,num desc;
#我们以sales_A升序排序,num降序排列
#当sales_A相同时按照num降序排列
二.MySQL分组
#1.按照单列分组
#我们筛选出每个人的销售总额
mysql> select name,sum(num)
-> from xse
-> group by name;
#筛选数据为分组名和聚合函数
#2.按照多列分组
#我们筛选出每个员工销售各自负责产品总量
mysql> select name,cat,sum(num)
-> from xse
-> group by name,cat;
#3.接下来我们做一个综合练习
#筛选出上半年各个产品销售量并降序排列
mysql> select cat,sum(num)
-> from xse
-> where sale_date between '2020-01-01' and '2021-06-30'
-> group by cat
-> having sum(num)>100
-> order by sum(num) desc;
整个语句执行顺序
1、from 对查询指定的表计算笛卡尔积
2、where 按照where_condition过滤数据
3、group by 进行分组操作
4、having 按照having_condition过滤数据
5、select 选择指定的列
6、order by 按照order_by_condition排序
三.limit函数
#此处我们用成绩表练习,我们先查看一下它的数据(按照score_num降序排序)
mysql> select * from score_test
-> order by score_num desc;
#我们取成绩比较好的三门功课成绩
mysql> select * from score_test
-> order by score_num desc
-> limit 0,3;
#检索排序后1-3行
#我们取排名3-5名三门功课成绩
mysql> select * from score_test
-> order by score_num desc
-> limit 2,3;
#我们取第3名以后所有课成绩
mysql> select * from score_test
-> order by score_num desc
-> limit 2,10000;
#原来的MySQL版本是可以用-1来代替,但是新版本是不行的
#如果我们知道我们数据有多少行,我们可以计算出来
#如果我们不知道数据有多少行,我们可以写一个很大的数字,它会自动筛选数据到末尾
#接下来我们做一个类似于前面的综合练习
#我们筛选出上半年销量前2名工作人员
mysql> select name,sum(num)
-> from xse
-> where sale_date between '2020-01-01' and '2021-06-30'
-> group by name
-> having sum(num)>100
-> order by sum(num) desc
-> limit 2;
整个语句执行顺序
1、from 对查询指定的表计算笛卡尔积
2、where 按照where_condition过滤数据
3、group by 进行分组操作
4、having 按照having_condition过滤数据
5、select 选择指定的列
6、order by 按照order_by_condition排序
7、limit 返回指定数目记录
以上是关于MySQL排序与分组的主要内容,如果未能解决你的问题,请参考以下文章