group by(面试官讲下MySQL中group by的3种用法 程序员我思考下)

编程、后端开发、面试的程序员、数据库、计算机软件、MySQL吐槽 mysql的分组group by 在业务代码中使用非常频繁 我们来复习下group by 含义 by后面跟指定的规则对数据进行分组,分组就是将一...

编程、后端开发、面试的程序员、数据库、计算机软件、MySQL

吐槽

mysql的分组group by 在业务代码中使用非常频繁

我们来复习下

group by 含义

by后面跟指定的规则对数据进行分组,分组就是将一个“数据集”根据条件拆分若干“小数据集”,然后针对“小数据集”进行数据处理。

初始表数据表(一个职工表)面试官:讲下MySQL中group by的3种用法 程序员:我思考下

数据面试官:讲下MySQL中group by的3种用法 程序员:我思考下

用法1(去重)

distinct 可以去重,其实group by 也是自带去重效果的

如下我根据条件(部门)去重,我看了下默认是每个部门的第一条数据

实际业务一般分组都会配合聚合函数使用

面试官:讲下MySQL中group by的3种用法 程序员:我思考下

用法2(配合聚合函数)

配合聚合函数一起计算

常见的5个聚合函数sum,max,min,avg,count

面试官:讲下MySQL中group by的3种用法 程序员:我思考下

统计每个部门工资最高的结果面试官:讲下MySQL中group by的3种用法 程序员:我思考下

用法3(配合HAVING)面试官:讲下MySQL中group by的3种用法 程序员:我思考下

求每部门最高工资的员工

group by 配合max能轻松求出每部门最高工资,

但是求最高工资的员工信息就需要2张表关联查询了

面试官:讲下MySQL中group by的3种用法 程序员:我思考下

小白们切记不要以为这个SQL就是最终正确结果

除了salary、dept部门是正确的,其他字段是分组前默认第一条数据,

所以如果你是顺序插入,到可以根据实际业务去1条SQL搞定(不推荐)。

面试官:讲下MySQL中group by的3种用法 程序员:我思考下

正确写法join

join写法性能最佳

实际业务这个 dept必须是索引才可以

面试官:讲下MySQL中group by的3种用法 程序员:我思考下

查单张表求最大工资方法

这里我是根据工资从大到小顺序插入的,

group by 后查出来的就是最大工资(默认第一条数据)

面试官:讲下MySQL中group by的3种用法 程序员:我思考下

group by 字段 ORDER BY null

order by null真可以提升性能,请见如下MySQL执行计划

面试官:讲下MySQL中group by的3种用法 程序员:我思考下

group by 总结1 group by返回的数据是有序的,如果不想排序浪费资源可以后面跟 ORDER BY null,执行计划可能会少一个Using filesortselect 行(原则上只能是分组列或函数列),但由于版本问题,可能会输出第一行的其他字段数据配合聚合函数统计出来的

编程、后端开发、面试的程序员、数据库、计算机软件、MySQL

以上皆为个人理解,如果有理解错的地方,欢迎专家指出

  • 发表于 2022-10-30 13:34
  • 阅读 ( 90 )
  • 分类:互联网

0 条评论

请先 登录 后评论
肖肖
肖肖

722 篇文章

你可能感兴趣的文章

相关问题