SQL-不使用order by查找数据中第n个数

2022-10-18 12:07:58

在这里插入图片描述

查找salary中第二大的数据,不使用order by,使用group by实现

首先通过自连接,查询每一个数据对应的大于等于它的数据

select*from 
     salaries s1join
     salaries s2on s1.salary<=s2.salary

在这里插入图片描述

从上图的结果中我们可以看出右边的每一个salary都要大于等于左边的salary,这样我们就可以查找出没有一个数据对应有几个大于等于它的数据

通过group by对左边数据进行分组

select s1.salaryfrom 
     salaries s1join
     salaries s2on s1.salary<=s2.salarygroupby s1.salary

在这里插入图片描述

对分组后的数据按照进行条件查询查找右边不同的salary有两个的数据。例如上述的自连接结果图中,左边salary为85097这一组中,右边salary中就有两个不同的数。

select s1.salaryfrom 
     salaries s1join
     salaries s2on s1.salary<=s2.salarygroupby s1.salaryhavingcount(distinct s2.salary)=2

在这里插入图片描述

  • 作者:aoi.tsukasa
  • 原文链接:https://blog.csdn.net/weixin_43424751/article/details/119680395
    更新时间:2022-10-18 12:07:58