[SQL] TOP에 대한 N 타이 PostgreSQL의 상당 : LIMIT "관계와?"
SQLTOP에 대한 N 타이 PostgreSQL의 상당 : LIMIT "관계와?"
나는 SQL 서버에서이 비슷한 찾고 있어요 :
SELECT TOP n WITH TIES FROM tablename
나는 PostgreSQL을에 LIMIT에 대해 알고 있지만, 위의 존재에 해당합니까? 나는 그것이 나를 위해 별도의 쿼리 각 시간을 절약하는 것처럼 그냥 궁금 해요.
내가 속성 nums있는 테이블 번호가있는 경우 : {10, 9, 8, 8, 2}. 내가 좋아하는 뭔가를하고 싶지 :
SELECT nums FROM Numbers ORDER BY nums DESC LIMIT *with ties* 3
가 다른 하나를 묶어 이후 반환한다 {10, 9, 8, 8}는 상위 3 플러스 추가 8 걸리기 때문에.
해결법
-
==============================
1.SQL Server의이 같은 PostgreSQL을에는 WITH TIES 절은 없다. PostgreSQL의에서 나는 TOP n에 타이로이를 대체 할 것입니다 .. ORDER BY <무언가>
SQL Server의이 같은 PostgreSQL을에는 WITH TIES 절은 없다. PostgreSQL의에서 나는 TOP n에 타이로이를 대체 할 것입니다 .. ORDER BY <무언가>
WITH cte AS ( SELECT *, rank() OVER (ORDER BY <something>) AS rnk FROM tbl ) SELECT * FROM cte WHERE rnk <= n;
명확하게하기 위해, 순위는 () (너무 많은 행을 반환) DENSE_RANK ()가 잘못된 것, 권리입니다. (링크 위에서)는 SQL Server 문서에서이 견적을 고려 :
과의 관계의 작업은 상단에 N ORDER BY 절에 의해 정의 된 마지막 행의 모든 피어를 포함하는 것입니다. 순위는 () 동일한 결과를 제공합니다.
확인하려면, 내가 SQL 서버와 테스트, 여기에 라이브 데모입니다. 그리고 여기에 더 편리한 SQLfiddle이다.
-
==============================
2.이 시도:
이 시도:
출력 : 10, 9, 8, 8
with numbers (nums) as ( values (10), (9), (8), (8), (2) ) SELECT nums FROM Numbers WHERE nums in (SELECT DISTINCT nums FROM Numbers ORDER BY nums DESC LIMIT 3) ORDER BY nums DESC
출력 : 10,10,9,8,8
with numbers (nums) as ( values (10), (9), (8), (8), (2), (10) ) SELECT nums FROM Numbers WHERE nums in (SELECT DISTINCT nums FROM Numbers ORDER BY nums DESC LIMIT 3) ORDER BY nums DESC
from https://stackoverflow.com/questions/9629953/postgresql-equivalent-for-top-n-with-ties-limit-with-ties by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL은 : 기록의 양의 비율에 의한 LIMIT? (0) | 2020.05.14 |
---|---|
[SQL] 오라클의 기본 날짜 형식 (0) | 2020.05.14 |
[SQL] 존재 IN에 대한 스파크 교체 (0) | 2020.05.14 |
[SQL] 자바에서 테이블 반환 매개 변수와 함께 저장 프로 시저를 호출 (0) | 2020.05.14 |
[SQL] 프로그래밍 / 동적 SQL에 WHERE 절을 추가 (0) | 2020.05.14 |