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

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

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

Ответы [ 46 ]

0 голосов
/ 17 апреля 2017

Очень просто. Отдельное ключевое слово позаботится и о дубликатах.

SELECT distinct SupplierID FROM [Products] order by SupplierID desc limit 1 offset 1
0 голосов
/ 24 марта 2014

Используйте этот запрос.

SELECT MAX ( colname ) 
FROM Tablename 
where colname < (
    SELECT MAX( colname ) 
    FROM Tablename)
0 голосов
/ 26 ноября 2013
select * from [table] where (column)=(select max(column)from [table] where column < (select max(column)from [table]))
0 голосов
/ 12 сентября 2013

Попробуйте:

select a.* ,b.* from 
(select * from (select ROW_NUMBER() OVER(ORDER BY fc_amount desc) SrNo1, fc_amount as amount1 From entry group by fc_amount) tbl where tbl.SrNo1 = 2) a
,
(select * from (select ROW_NUMBER() OVER(ORDER BY fc_amount asc) SrNo2, fc_amount as amount2  From entry group by fc_amount) tbl where tbl.SrNo2 =2) b
0 голосов
/ 09 июля 2009
select * from emp e where 3>=(select count(distinct salary)
    from emp where s.salary<=salary)

Этот запрос выбирает максимум три зарплаты. Если два emp получают одинаковую зарплату, это не влияет на запрос.

0 голосов
/ 28 августа 2008
select top 1 MyIntColumn from MyTable
where
 MyIntColumn <> (select top 1 MyIntColumn from MyTable order by MyIntColumn desc)
order by MyIntColumn desc
0 голосов
/ 21 апреля 2014
select MAX(salary) as SecondMax from test where salary !=(select MAX(salary) from test)
0 голосов
/ 25 сентября 2017
 SELECT  * FROM `employee` WHERE  employee_salary = (SELECT employee_salary 
 FROM`employee` GROUP BY employee_salary ORDER BY employee_salary DESC LIMIT 
 1,1)
0 голосов
/ 06 июня 2017

Самый простой способ получить вторую последнюю строку из таблицы SQL - использовать ORDER BYColumnNameDESC и установить LIMIT 1,1.

Попробуйте это:

SELECT * from `TableName` ORDER BY `ColumnName` DESC LIMIT 1,1
0 голосов
/ 28 августа 2008

См. Как выбрать n-ую строку в таблице базы данных SQL? .

Sybase SQL Anywhere поддерживает:

SELECT TOP 1 START AT 2 value from table ORDER BY value
...