Какой самый простой SQL-запрос для поиска второго по величине значения? - PullRequest
145 голосов
/ 28 августа 2008

Какой самый простой SQL-запрос для поиска второго по величине целочисленного значения в определенном столбце?

Возможно, в столбце есть повторяющиеся значения.

Ответы [ 46 ]

0 голосов
/ 23 апреля 2013

Мы также можем использовать элементы order by и top 1 следующим образом:

Select  top 1 col_name from table_name
where col_name < (Select top 1 col_name from table_name order by col_name desc)
order by col_name desc 
0 голосов
/ 15 сентября 2009

Использование коррелированного запроса:

Select * from x x1 where 1 = (select count(*) from x where x1.a < a)
0 голосов
/ 25 сентября 2017
select max(column_name) from table_name
where column_name not in (select max(column_name) from table_name);

not in - это условие, которое исключает наибольшее значение column_name.

Ссылка: Интервью с программистом

0 голосов
/ 13 мая 2013
SELECT * FROM EMP
WHERE salary=
        (SELECT MAX(salary) FROM EMP
           WHERE salary != (SELECT MAX(salary) FROM EMP)
        );
0 голосов
/ 15 ноября 2018

Сначала создайте фиктивную таблицу без максимальной зарплаты, затем запросите максимальное значение из фиктивной таблицы

SELECT max(salary) from (Select * FROM emp WHERE salary<> (SELECT MAX(salary) from emp)) temp
0 голосов
/ 15 августа 2013

Это еще один способ найти второе по величине значение столбца. Рассмотрите таблицу «Студент» и столбец «Возраст». Тогда запрос будет

select top 1 Age from Student where Age in(select distinct top 2 Age  from Student order by Age desc) order by Age asc
...