在 MySQL8.0 版本之前,是没有类似 Oracle、SQLserver、postgresql 等数据库中像 “select 窗口函数 over (partition by 用于分组的列名, order by 用于排序的列名” 的开窗函数,来实现分组排序、分组求和这样的功能。
很不巧的是我刚好在用mysql 5.7版本 -_- ~~~
窗口函数介绍可以参看 https://www.cnblogs.com/zhaoyudang/p/13936611.html
用户变量定义、累加求和 https://blog.csdn.net/weixin_47491767/article/details/112969837
给定数据
分组排序
需求描述:获取每一个部门薪水最高的员工的信息
分析:按部门分组、排序,取值
定义两个变量
row_num_t 用于存储每一个组中的排序结果(排名)
dept_no_t 用于存储判断数据行是否是同一组(部门)
select * from (
select
case
when @dept_no_t != x.dept_no then @row_num_t := 1
else @row_num_t := @row_num_t + 1
end as sort_result,
x.id,
x.emp_name,
@dept_no_t :=