MySQL 找到包含最大值和最小值的记录

布满荆棘的人生 2022-12-20 06:06 250阅读 0赞

备注:测试数据库版本为MySQL 8.0

如需要scott用户下建表及录入数据语句,可参考:
scott建表及录入数据sql脚本

一.需求

查找表中的”两级”值。例如,找出表EMP中具有最高工资和最低工资的员工。

二.解决方案

2.1 子查询方法

  1. select ename
  2. from emp
  3. where sal in ( (select min(sal) from emp),
  4. (select max(sal) from emp) );

测试记录

  1. mysql> select ename
  2. -> from emp
  3. -> where sal in ( (select min(sal) from emp),
  4. -> (select max(sal) from emp) );
  5. +-------+
  6. | ename |
  7. +-------+
  8. | SMITH |
  9. | KING |
  10. +-------+
  11. 2 rows in set (0.00 sec)

2.2 MySQL 8.0 窗口函数方法

  1. select ename
  2. from (
  3. select ename,sal,
  4. min(sal) over w as 'min_sal',
  5. max(sal) over w as 'max_sal'
  6. from emp
  7. window w as ()
  8. ) x
  9. where sal in (min_sal,max_sal);

测试记录

  1. mysql> select ename
  2. -> from (
  3. -> select ename,sal,
  4. -> min(sal) over w as 'min_sal',
  5. -> max(sal) over w as 'max_sal'
  6. -> from emp
  7. -> window w as ()
  8. -> ) x
  9. -> where sal in (min_sal,max_sal);
  10. +-------+
  11. | ename |
  12. +-------+
  13. | SMITH |
  14. | KING |
  15. +-------+
  16. 2 rows in set (0.00 sec)

发表评论

表情:
评论列表 (有 0 条评论,250人围观)

还没有评论,来说两句吧...

相关阅读

    相关 互换位置

    问题: 下面程序的功能是从键盘任意输入n个数,然后找出其中的最大数与最小数,并将其位置对换。这个程序有无错误?如果有,那么错在哪里?请通过程序调试找到错误的原因并修正错误