[SQL] 두 번째로 큰 값을 찾을 수있는 간단한 SQL 쿼리는 무엇입니까?
SQL두 번째로 큰 값을 찾을 수있는 간단한 SQL 쿼리는 무엇입니까?
특정 열에서 두 번째로 큰 정수 값을 찾을 수있는 간단한 SQL 쿼리는 무엇입니까?
열에서 중복 값은 아마이 있습니다.
해결법
-
==============================
1.
SELECT MAX( col ) FROM table WHERE col < ( SELECT MAX( col ) FROM table )
-
==============================
2.
SELECT MAX(col) FROM table WHERE col NOT IN (SELECT MAX(col) FROM table);
-
==============================
3.T-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
마이크로 소프트 SQL에서 첫 번째 방법은 문제의 열이 클러스터 된 경우에도, 두 번째로 두 배 빠릅니다.
정렬 작업이 비교적 느린 테이블 또는 인덱스 스캔이 최대 집계 사용에 비교되기 때문입니다.
다른 방법으로, ROW_NUMBER () 함수를 사용할 수있는 Microsoft SQL 2005 이상 :
select col from ( select ROW_NUMBER() over (order by col asc) as 'rowNum', col from [table] ) withRowNum where rowNum = 2
-
==============================
4.당신이 필요로하는 데이터베이스를 명확히 할 수 있습니다, 그래서 나는 여기에 몇 가지 SQL 서버의 특정 일부 MySQL의 특정 솔루션 모두를 참조하십시오. 나는 이것이 MySQL은 사소한 때문에 나는 SQL 서버를 말하고 싶지만 추측이 있다면 비록.
당신이 필요로하는 데이터베이스를 명확히 할 수 있습니다, 그래서 나는 여기에 몇 가지 SQL 서버의 특정 일부 MySQL의 특정 솔루션 모두를 참조하십시오. 나는 이것이 MySQL은 사소한 때문에 나는 SQL 서버를 말하고 싶지만 추측이 있다면 비록.
나는 또한 그래서 당신이 동의하는 사람 조심, 그들은 계정에 중복의 가능성을 실패하지 작업 때문에 몇 가지 솔루션을 참조하십시오. 마지막으로, 나는 작동 할 몇 가지를 볼 수 있지만 그 테이블이 전체 스캔을 할 것입니다. 당신은 2 차 검사는이 개 값에서 찾고 있는지 확인하려면.
SQL 서버 (사전-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 서버 2012는 이제 훨씬 클리너 (표준) OFFSET / 구문을 FETCH를 지원합니다 :
SELECT TOP 2 [column] FROM [Table] GROUP BY [column] ORDER BY [column] DESC OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY;
-
==============================
5.난 당신이 뭔가를 할 수 있다고 생각 :
난 당신이 뭔가를 할 수 있다고 생각 :
SELECT * FROM Table ORDER BY NumericalColumn DESC LIMIT 1 OFFSET 1
또는
SELECT * FROM Table ORDER BY NumericalColumn DESC LIMIT (1, 1)
데이터베이스 서버에 따라 달라집니다. 힌트 : SQL 서버가 LIMIT하지 않습니다.
-
==============================
6.당신은 다음과 같은 쿼리를 사용하여 열의 두 번째로 큰 값을 찾을 수 있습니다
당신은 다음과 같은 쿼리를 사용하여 열의 두 번째로 큰 값을 찾을 수 있습니다
SELECT * FROM TableName a WHERE 2 = (SELECT count(DISTINCT(b.ColumnName)) FROM TableName b WHERE a.ColumnName <= b.ColumnName);
다음 링크에 대한 자세한 내용을 찾을 수 있습니다
http://www.abhishekbpatel.com/2012/12/how-to-get-nth-maximum-and-minimun.html
-
==============================
7.가장 쉬운 응용 프로그램에서이 결과 집합에서 두 번째 값을 얻을 수있을 것입니다 :
가장 쉬운 응용 프로그램에서이 결과 집합에서 두 번째 값을 얻을 수있을 것입니다 :
SELECT DISTINCT value FROM Table ORDER BY value DESC LIMIT 2
하지만 당신은 SQL을 사용하여 두 번째 값을 선택해야하는 경우, 방법에 대한 :
SELECT MIN(value) FROM (SELECT DISTINCT value FROM Table ORDER BY value DESC LIMIT 2) AS t
-
==============================
8.아주 간단한 쿼리는 두 번째로 큰 값을 찾을 수 있습니다
아주 간단한 쿼리는 두 번째로 큰 값을 찾을 수 있습니다
SELECT `Column` FROM `Table` ORDER BY `Column` DESC LIMIT 1,1;
-
==============================
9.MSSQL
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
서브 쿼리의 필요가 ... 하나 개의 행을 건너 뛸 수없고, 내림차순으로 주문 후 두 번째 행을 선택
-
==============================
10.
SELECT MAX(Salary) FROM Employee WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee )
하지 전체 테이블에서 최대 급여를 포함 -이 쿼리 결과에서, 최대 급여를 반환합니다.
-
==============================
11.오래된 질문은 나도 알아,하지만 나에게 더 나은 간부 계획을했다 :
오래된 질문은 나도 알아,하지만 나에게 더 나은 간부 계획을했다 :
SELECT TOP 1 LEAD(MAX (column)) OVER (ORDER BY column desc) FROM TABLE GROUP BY column
-
==============================
12.이것은 당신이 시도 할 수 있습니다, 아주 간단한 코드입니다 : -
이것은 당신이 시도 할 수 있습니다, 아주 간단한 코드입니다 : -
예 : 테이블 이름 = 시험
salary 1000 1500 1450 7500
MSSQL 코드는 2 번째로 큰 값을 얻을 수
select salary from test order by salary desc offset 1 rows fetch next 1 rows only;
여기 수단 테이블의 2 행을 '1 행 오프셋'을하고 만 표시하는 1 행입니다 '에만 다음 1 개 행을 가져 오기'. 당신이 사용을 해달라고하면 다음이 두 번째 행에서 모든 행을 보여줍니다 '1 행은 옆에 가져 오기'.
-
==============================
13.
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
모든 행의 값을 얻기 위해이 도움말을 희망 .....
-
==============================
14.모두의 간단한
모두의 간단한
select sal from salary order by sal desc limit 1 offset 1
-
==============================
15.
select min(sal) from emp where sal in (select TOP 2 (sal) from emp order by sal desc)
노트
살은 COL 이름입니다 EMP 테이블의 이름입니다
-
==============================
16.톰은 하나 개의 값은 [TABLE_NAME] 섹션에서 선택 최대 ([COLUMN_NAME])에 반환보다 더있을 때이 실패 할 것으로 판단된다. 즉, 데이터 세트에서 2 개 이상의 값이 어디에.
톰은 하나 개의 값은 [TABLE_NAME] 섹션에서 선택 최대 ([COLUMN_NAME])에 반환보다 더있을 때이 실패 할 것으로 판단된다. 즉, 데이터 세트에서 2 개 이상의 값이 어디에.
귀하의 질의에 약간의 수정이 작동합니다 -
select max([COLUMN_NAME]) from [TABLE_NAME] where [COLUMN_NAME] **IN** ( select max([COLUMN_NAME]) from [TABLE_NAME] )
-
==============================
17.
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));
하위 쿼리는 가장 큰 이외의 모든 값을 반환합니다. 반환 된 목록에서 최대 값을 선택합니다.
-
==============================
18.
select col_name from ( select dense_rank() over (order by col_name desc) as 'rank', col_name from table_name ) withrank where rank = 2
-
==============================
19.
SELECT * FROM table WHERE column < (SELECT max(columnq) FROM table) ORDER BY column DESC LIMIT 1
-
==============================
20.그것은 가장 쉬운 방법입니다 :
그것은 가장 쉬운 방법입니다 :
SELECT Column name FROM Table name ORDER BY Column name DESC LIMIT 1,1
-
==============================
21.
select age from student group by id having age<(select max(age) from student)order by age limit 1
-
==============================
22.중복 값을 언급 한 바와 같이. 이 경우에서는 두 번째로 높은 값을 찾아 DISTINCT와 GROUP BY를 사용할 수있다
중복 값을 언급 한 바와 같이. 이 경우에서는 두 번째로 높은 값을 찾아 DISTINCT와 GROUP BY를 사용할 수있다
다음 표는
:
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
LIMIT의 제 1 부분 = 시작 인덱스
LIMIT의 제 2 부분 = 얼마나 많은 값
-
==============================
23.
SELECT MAX(sal) FROM emp WHERE sal NOT IN (SELECT top 3 sal FROM emp order by sal desc )
이 EMP 테이블의 세 번째로 높은 샐를 반환합니다
-
==============================
24.
select max(column_name) from table_name where column_name not in (select max(column_name) from table_name);
하지에서 COLUMN_NAME의 가장 높은 값을 제외하는 조건이다.
참조 : 프로그래머 인터뷰
-
==============================
25.이 같은? 나는하지만, 그것을 테스트하지 않았습니다 :
이 같은? 나는하지만, 그것을 테스트하지 않았습니다 :
select top 1 x from ( select top 2 distinct x from y order by x desc ) z order by x
-
==============================
26.SQL 데이터베이스 테이블에서 n 번째 행을 선택하는 방법을 참조하십시오?
SQL 데이터베이스 테이블에서 n 번째 행을 선택하는 방법을 참조하십시오?
사이베이스의 SQL Anywhere를 지원 :
SELECT TOP 1 START AT 2 value from table ORDER BY value
-
==============================
27.상관 쿼리를 사용 :
상관 쿼리를 사용 :
Select * from x x1 where 1 = (select count(*) from x where x1.a < a)
-
==============================
28.
select * from emp e where 3>=(select count(distinct salary) from emp where s.salary<=salary)
이 쿼리는 최대 세 급여를 선택합니다. 이 EMP가 동일한 급여를받을 경우이 쿼리에 영향을주지 않습니다.
-
==============================
29.
select top 1 MyIntColumn from MyTable where MyIntColumn <> (select top 1 MyIntColumn from MyTable order by MyIntColumn desc) order by MyIntColumn desc
-
==============================
30.MS SQL에서이 작품 :
MS SQL에서이 작품 :
select max([COLUMN_NAME]) from [TABLE_NAME] where [COLUMN_NAME] < ( select max([COLUMN_NAME]) from [TABLE_NAME] )
from https://stackoverflow.com/questions/32100/what-is-the-simplest-sql-query-to-find-the-second-largest-value by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PostgreSQL의 그룹화 LIMIT : 각 그룹의 첫 번째 N 행을 보여? (0) | 2020.03.22 |
---|---|
[SQL] MySQL은 INSERT INTO 테이블 VALUES ... INSERT INTO 테이블 SET 대 (0) | 2020.03.22 |
[SQL] 하나 개의 컬럼에 DISTINCT SELECT (0) | 2020.03.22 |
[SQL] 어떻게 플라스크-SQLAlchemy의 응용 프로그램에서 원시 SQL을 실행합니다 (0) | 2020.03.22 |
[SQL] 안드로이드 SQLite는의 날짜와 작업에 가장 좋은 방법은 [마감] (0) | 2020.03.22 |