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

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

В столбце могут быть 9X_sql-syntax повторяющиеся значения.

199
0
26
Общее количество ответов: 26

Ответ #1

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

SELECT MAX( col ) FROM table WHERE col < ( SELECT MAX( col ) FROM table ) 
9X_sql-statement
360
2

  • спасибо, использовал это, чтобы найти вторую последнюю дату [здесь] (http://stackoverflow.com/questions/8590296/sql-returning-second-newest-record/2 ...

Ответ #2

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

SELECT MAX(col) FROM table WHERE col NOT IN (SELECT MAX(col) FROM table); 
9X_sql-query
64
0

Ответ #3

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

В T-Sql есть два пути:

--filter out the max select max( col ) from [table] where col < ( select max( col ) from [table] ) --sort top two then bottom one select top 1 col from ( select top 2 col from [table] order by col) topTwo order by col desc 

В Microsoft SQL первый 9X_sql способ в два раза быстрее второго, даже 9X_puzzle если рассматриваемый столбец кластеризован.

Это 9X_sql-syntax связано с тем, что операция сортировки выполняется 9X_sql-select относительно медленно по сравнению со сканированием 9X_sql таблицы или индекса, которые использует 9X_puzzle агрегация max.

Кроме того, в Microsoft SQL 2005 9X_sql и выше вы можете использовать функцию ROW_NUMBER():

select col from ( select ROW_NUMBER() over (order by col asc) as 'rowNum', col from [table] ) withRowNum where rowNum = 2 

32
0

Ответ #4

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

Я вижу здесь некоторые решения, специфичные 9X_sql-statement для SQL Server, и некоторые решения, специфичные 9X_puzzle для MySQL, поэтому вы можете уточнить, какая 9X_select-statement база данных вам нужна. Хотя, если бы мне 9X_sql-syntax пришлось угадывать, я бы сказал, что это 9X_sql-select SQL Server, поскольку в MySQL это тривиально.

Я 9X_select-statement также вижу некоторые решения, которые не 9X_sql-select будут работать, потому что они не учитывают 9X_sql-syntax возможность дублирования, поэтому будьте 9X_sql-statement осторожны, какие из них вы принимаете. Наконец, я 9X_sql-select вижу несколько, которые будут работать, но 9X_sql для этого потребуется два полных сканирования 9X_sql-query таблицы. Вы хотите убедиться, что второе 9X_sql сканирование просматривает только 2 значения.

SQL 9X_sql-syntax Server (до 2012 г.):

SELECT MIN([column]) AS [column] FROM ( SELECT TOP 2 [column] FROM [Table] GROUP BY [column] ORDER BY [column] DESC ) a 

MySQL:

SELECT `column` FROM `table` GROUP BY `column` ORDER BY `column` DESC LIMIT 1,1 

Обновление:

SQL Server 2012 9X_sql-select теперь поддерживает гораздо более чистый 9X_sqlselectstandard) синтаксис OFFSET/FETCH:

SELECT [column] FROM [Table] GROUP BY [column] ORDER BY [column] DESC OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY; 

27
2

  • @PankajSharma нет, это все равно будет ра ...

Ответ #5

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

Я полагаю, вы можете сделать что-то вроде:

SELECT * FROM Table ORDER BY NumericalColumn DESC LIMIT 1 OFFSET 1 

или

SELECT * FROM Table ORDER BY NumericalColumn DESC LIMIT (1, 1) 

в 9X_sql-select зависимости от вашего сервера базы данных. Подсказка: SQL 9X_select-statement Server не выполняет LIMIT.

19
0

Ответ #6

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

Проще всего было бы получить второе значение 9X_sql-query из этого набора результатов в приложении:

SELECT DISTINCT value FROM Table ORDER BY value DESC LIMIT 2 

Но 9X_sql если вы должны выбрать второе значение с 9X_sql-syntax помощью SQL, как насчет:

SELECT MIN(value) FROM (SELECT DISTINCT value FROM Table ORDER BY value DESC LIMIT 2) AS t 

7
2

  • Вы запускали это ...

Ответ #7

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

Очень простой запрос для поиска второго 9X_sql по величине значения

SELECT `Column` FROM `Table` ORDER BY `Column` DESC LIMIT 1,1; 

6
0

Ответ #8

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

вы можете найти второе по величине значение 9X_sql-query столбца, используя следующий запрос

SELECT * FROM TableName a WHERE 2 = (SELECT count(DISTINCT(b.ColumnName)) FROM TableName b WHERE a.ColumnName <= b.ColumnName); 

Вы можете 9X_sql найти более подробную информацию по следующей 9X_select-statement ссылке

http://www.abhishekbpatel.com/2012/12/how-to-get-nth-maximum-and-minimun.html

6
0

Ответ #9

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

MSSQL

SELECT * FROM [Users] order by UserId desc OFFSET 1 ROW FETCH NEXT 1 ROW ONLY; 

MySQL

SELECT * FROM Users order by UserId desc LIMIT 1 OFFSET 1 

Нет необходимости в подзапросах ... просто 9X_sql-syntax пропустите одну строку и выберите вторую 9X_puzzle строку после порядка по убыванию

6
0

Ответ #10

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

SELECT MAX(Salary) FROM Employee WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee ) 
Этот запрос вернет максимальную зарплату 9X_sql-select из результата, который не содержит максимальную 9X_sql-statement зарплату из общей таблицы.
4
1

  • Можете ли вы [отредактировать], чтобы объяснить, чем это значительно отличается от стар ...

Ответ #11

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

Самый простой

select sal from salary order by sal desc limit 1 offset 1 

9X_sql

3
0

Ответ #12

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

Старый вопрос, который я знаю, но он дал 9X_sql-query мне лучший план выполнения:

 SELECT TOP 1 LEAD(MAX (column)) OVER (ORDER BY column desc) FROM TABLE GROUP BY column 

3
0

Ответ #13

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

Это очень простой код, вы можете попробовать 9X_sql это: -

пример: Название таблицы = тест

salary 1000 1500 1450 7500 

Код 9X_sql-select MSSQL для получения второго по величине 9X_sql-statement значения

select salary from test order by salary desc offset 1 rows fetch next 1 rows only; 

здесь «смещение 1 строки» означает 9X_sql-query вторую строку таблицы, а «выбрать только 9X_sql-syntax следующую 1 строку» - для отображения только 9X_sqlselect этой 1 строки. если вы не используете «выбрать 9X_sql-select только следующую 1 строку», тогда будут 9X_sql показаны все строки из второй строки.

3
0

Ответ #14

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

 select * from (select ROW_NUMBER() over (Order by Col_x desc) as Row, Col_1 from table_1)as table_new tn inner join table_1 t1 on tn.col_1 = t1.col_1 where row = 2 
Надеюсь, эта помощь поможет получить значение 9X_sqlselect для любой строки .....
2
0

Ответ #15

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

Воспользуйтесь этим запросом.

SELECT MAX( colname ) FROM Tablename where colname < ( SELECT MAX( colname ) FROM Tablename) 

9X_puzzle

2
1

  • Этот ответ идентичен ответу @Matt Rogish, который был опубликован 6 лет назад ...

Ответ #16

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

Том, полагаю, это не удастся, если в разделе 9X_puzzle select max([COLUMN_NAME]) from [TABLE_NAME] будет возвращено более одного значения. т.е. если 9X_sqlselect в наборе данных более двух значений.

Небольшое 9X_sql-syntax изменение вашего запроса подойдет -

select max([COLUMN_NAME]) from [TABLE_NAME] where [COLUMN_NAME] **IN** ( select max([COLUMN_NAME]) from [TABLE_NAME] ) 

1
0

Ответ #17

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

select max(COL_NAME) from TABLE_NAME where COL_NAME in (select COL_NAME from TABLE_NAME where COL_NAME < (select max(COL_NAME) from TABLE_NAME)); 
Подзапрос
возвращает все значения, кроме самого большого. выберите 9X_select-statement максимальное значение из возвращенного списка.
1
0

Ответ #18

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

select min(sal) from emp where sal in (select TOP 2 (sal) from emp order by sal desc) 
Примечание
sal - это имя столбца
emp - имя 9X_sql-syntax таблицы
1
0

Ответ #19

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

select col_name from ( select dense_rank() over (order by col_name desc) as 'rank', col_name from table_name ) withrank where rank = 2 
9X_sql-query
1
0

Ответ #20

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

SELECT * FROM table WHERE column < (SELECT max(columnq) FROM table) ORDER BY column DESC LIMIT 1 
9X_sql-syntax
1
0

Ответ #21

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

Это еще один способ найти второе по величине 9X_puzzle значение столбца. Рассмотрим таблицу "Студент" и 9X_sql-syntax столбец "Возраст". Тогда запрос будет:

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

1
0

Ответ #22

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

Самый простой способ:

SELECT Column name FROM Table name ORDER BY Column name DESC LIMIT 1,1 

9X_puzzle

1
0

Ответ #23

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

select age from student group by id having age<(select max(age) from student)order by age limit 1 
9X_puzzle
1
0

Ответ #24

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

Как вы упомянули, повторяющиеся значения. В 9X_sql-syntax таком случае вы можете использовать DISTINCT и GROUP BY, чтобы 9X_sql-syntax найти второе по величине значение

Вот таблица

зарплата

:

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

ГРУППА ПО

SELECT amount FROM salary GROUP by amount ORDER BY amount DESC LIMIT 1 , 1 

ОТЛИЧИТЕЛЬНО

SELECT DISTINCT amount FROM salary ORDER BY amount DESC LIMIT 1 , 1 

Первая 9X_sql-query часть LIMIT = начальный индекс

Вторая часть 9X_puzzle LIMIT = сколько значений

1
0

Ответ #25

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

SELECT MAX(sal) FROM emp WHERE sal NOT IN (SELECT top 3 sal FROM emp order by sal desc ) 
это вернет третью по величине sal таблицы 9X_sql-query emp
1
0

Ответ #26

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

select max(column_name) from table_name where column_name not in (select max(column_name) from table_name); 
не в - это условие, исключающее наивысшее значение 9X_sqlselect column_name.
Ссылка: programmer interview
1
0