Получение второго по высоте значения от таблицы

Как я получаю второе по высоте значение от таблицы?

9
задан Peter Mortensen 28 November 2010 в 19:22
поделиться

10 ответов

select max(val) from table where val < (select max(val) form table) 
11
ответ дан 4 December 2019 в 07:04
поделиться
SELECT E.lastname, E.salary FROM employees E
WHERE 2 = (SELECT COUNT(*) FROM employess E2
            WHERE E2.salary > E.salary)

Взято из здесь
Это работает почти во всех БД

2
ответ дан 4 December 2019 в 07:04
поделиться

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

SELECT * FROM 
(SELECT empno, deptno, sal,
DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal DESC NULLS LAST) DENSE_RANK
FROM emp)
WHERE DENSE_RANK = 2;

Это работает как в Oracle, так и в SQL Server.

2
ответ дан 4 December 2019 в 07:04
поделиться

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

SELECT TOP 1 Column FROM Table WHERE Column < (SELECT MAX(Column) FROM Table) 
ORDER BY Column DESC

SELECT TOP 1 Column FROM (SELECT TOP <n> Column FROM Table ORDER BY Column DESC) 

ORDER BY ASC

измените n, чтобы получить значение любой позиции

1
ответ дан 4 December 2019 в 07:04
поделиться

Может быть:

SELECT * FROM table ORDER BY value DESC LIMIT 1, 1
1
ответ дан 4 December 2019 в 07:04
поделиться

выбрать верхние 2 field_name из table_name в порядке по field_name desc limit 1

5
ответ дан 4 December 2019 в 07:04
поделиться

Круто, это почти как Code Golf.

Microsoft SQL Server 2005 и выше:

SELECT *
FROM (
    SELECT 
        *,
        row_number() OVER (ORDER BY var DESC) AS ranking
    FROM table
) AS q
WHERE ranking = 2
2
ответ дан 4 December 2019 в 07:04
поделиться
Select Top 1 sq.ColumnToSelect
From
(Select Top 2 ColumnToSelect
From MyTable
Order by ColumnToSelect Desc
)sq
Order by sq.ColumnToSelect asc
2
ответ дан 4 December 2019 в 07:04
поделиться

одно решение будет таким:

SELECT var FROM table ORDER BY var DESC LIMIT 1,1
0
ответ дан 4 December 2019 в 07:04
поделиться

В MySQL вы можете, например, использовать LIMIT 1, 1 :

SELECT col FROM tbl ORDER BY col DESC LIMIT 1, 1

См. справочное руководство MySQL: SELECT Syntax ).

Предложение LIMIT может использоваться для ограничения количества строк, возвращаемых оператором SELECT. LIMIT принимает один или два числовых аргумента, которые оба должны быть неотрицательными целочисленными константами (кроме случаев использования подготовленных операторов).

С двумя аргументами первый аргумент указывает смещение первой возвращаемой строки, а второй указывает максимальное количество возвращаемых строк. Смещение начальной строки 0 (не 1):

 SELECT * FROM tbl LIMIT 5,10; # Получить строки 6-15
6
ответ дан 4 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: