Какой самый простой SQL-запрос для поиска второго по величине целочисленного значения в определенном столбце?
Возможно, в столбце есть повторяющиеся значения.
Мы также можем использовать элементы 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
Использование коррелированного запроса:
Select * from x x1 where 1 = (select count(*) from x where x1.a < a)
select max(column_name) from table_name where column_name not in (select max(column_name) from table_name);
not in - это условие, которое исключает наибольшее значение column_name.
Ссылка: Интервью с программистом
SELECT * FROM EMP WHERE salary= (SELECT MAX(salary) FROM EMP WHERE salary != (SELECT MAX(salary) FROM EMP) );
Сначала создайте фиктивную таблицу без максимальной зарплаты, затем запросите максимальное значение из фиктивной таблицы
SELECT max(salary) from (Select * FROM emp WHERE salary<> (SELECT MAX(salary) from emp)) temp
Это еще один способ найти второе по величине значение столбца. Рассмотрите таблицу «Студент» и столбец «Возраст». Тогда запрос будет
select top 1 Age from Student where Age in(select distinct top 2 Age from Student order by Age desc) order by Age asc