Какой самый простой SQL-запрос для поиска второго по величине значения?
Какой самый простой SQL-запрос для поиска 9X_sql-syntax второго по величине целочисленного значения 9X_sql в определенном столбце?
В столбце могут быть 9X_sql-syntax повторяющиеся значения.
Ответ #1
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
SELECT MAX( col ) FROM table WHERE col < ( SELECT MAX( col ) FROM table )
9X_sql-statement
- спасибо, использовал это, чтобы найти вторую последнюю дату [здесь] (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
Ответ #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
Ответ #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_sqlselect (и standard) синтаксис OFFSET/FETCH:
SELECT [column]
FROM [Table]
GROUP BY [column]
ORDER BY [column] DESC
OFFSET 1 ROWS
FETCH NEXT 1 ROWS ONLY;
- @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.
Ответ #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
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
Очень простой запрос для поиска второго 9X_sql по величине значения
SELECT `Column` FROM `Table` ORDER BY `Column` DESC LIMIT 1,1;
Ответ #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
Ответ #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 строку после порядка по убыванию
Ответ #10
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
SELECT MAX(Salary) FROM Employee WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )
Этот запрос вернет максимальную зарплату 9X_sql-select из результата, который не содержит максимальную 9X_sql-statement зарплату из общей таблицы.
- Можете ли вы [отредактировать], чтобы объяснить, чем это значительно отличается от стар ...
Ответ #11
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
Самый простой
select sal from salary order by sal desc limit 1 offset 1
9X_sql
Ответ #12
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
Старый вопрос, который я знаю, но он дал 9X_sql-query мне лучший план выполнения:
SELECT TOP 1 LEAD(MAX (column)) OVER (ORDER BY column desc)
FROM TABLE
GROUP BY column
Ответ #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 показаны все строки из второй строки.
Ответ #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 для любой строки .....
Ответ #15
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
Воспользуйтесь этим запросом.
SELECT MAX( colname )
FROM Tablename
where colname < (
SELECT MAX( colname )
FROM Tablename)
9X_puzzle
- Этот ответ идентичен ответу @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] )
Ответ #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 максимальное значение из возвращенного списка.
Ответ #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 таблицы
Ответ #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
Ответ #20
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
SELECT * FROM table WHERE column < (SELECT max(columnq) FROM table) ORDER BY column DESC LIMIT 1
9X_sql-syntax
Ответ #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
Ответ #22
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
Самый простой способ:
SELECT
Column name
FROM
Table name
ORDER BY
Column name DESC
LIMIT 1,1
9X_puzzle
Ответ #23
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
select age from student group by id having age<(select max(age) from student)order by age limit 1
9X_puzzle
Ответ #24
Ответ на вопрос: Какой самый простой SQL-запрос для поиска второго по величине значения?
Как вы упомянули, повторяющиеся значения. В 9X_sql-syntax таком случае вы можете использовать DISTINCT и GROUP BY, чтобы 9X_sql-syntax найти второе по величине значение
Вот таблица
зарплата
:
ГРУППА ПО
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 = сколько значений
Ответ #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
Ответ #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
-
4
-
4
-
8
-
12
-
58
-
14
-
7
-
26
-
7
-
6
-
25
-
3
-
28
-
9
-
10
-
3
-
9
-
2
-
3
-
14
-
5
-
8
-
11
-
8
-
6
-
6
-
23
-
12
-
16
-
6
-
2
-
13
-
9
-
6
-
25
-
4
-
23
-
5
-
8
-
16
-
7
-
7
-
15
-
25
-
4
-
8
-
10
-
10
-
5
-
3