programing

PARTITION BY 1은 무엇을 의미합니까?

lastmoon 2023. 7. 26. 22:19
반응형

PARTITION BY 1은 무엇을 의미합니까?

첫 번째 FETCH 직후에 결과 세트의 총 행 수가 필요한 커서 쌍의 경우(일부 시행착오 후) 아래 쿼리가 발생했습니다.

SELECT
 col_a,
 col_b,
 col_c,
 COUNT(*) OVER( PARTITION BY 1 ) AS rows_in_result
FROM 
 myTable JOIN theirTable ON
 myTable.col_a = theirTable.col_z
GROUP BY
 col_a, col_b, col_c
ORDER BY 
 col_b

쿼리 출력이 X 행이면 rows_in_result가 이를 정확하게 반영합니다.

  • PARTITION BY 1은 무엇을 의미합니까?
    • 아마 데이터베이스에 결과를 각각 1행씩 분할하라고 지시할 이라고 생각합니다.

PARTITION BY의 일반적이지 않은 사용입니다.쿼리가 123개의 행을 모두 반환할 경우 각 행의 rows_in_result 값이 123이 되도록 모든 항목을 동일한 파티션에 배치합니다.

따라서 이는 보다 간결한 것과 같습니다.

COUNT(*) OVER ()

데이터베이스는 매우 자유롭게 제한을 추가할 수 있습니다.OVER()가끔, 어느 쪽이든.PARTITION BY [...]및/또는ORDER BY [...]집계 함수에 따라 필수 절입니다.PARTITION BY 1구문 무결성에 사용되는 더미 절일 수 있습니다.다음 두 가지는 일반적으로 동일합니다.

[aggregate function] OVER ()
[aggregate function] OVER (PARTITION BY 1)

그러나 Sybase SQL Anywhere 및 CUBRID는 이를 해석합니다.1열 인덱스 참조로서, 에서 가능한 것과 유사합니다.ORDER BY [...]이것은 쿼리의 투영에 평가 순서를 부과하기 때문에 약간 놀라운 것으로 보일 수 있습니다.당신의 경우, 이것은 다음이 동등하다는 것을 의미합니다.

COUNT(*) OVER (PARTITION BY 1)
COUNT(*) OVER (PARTITION BY col_a)

다른 데이터베이스의 해석에서 이러한 특이한 편차를 통해 더 복잡한 그룹화 표현식을 참조할 수 있습니다.

언급URL : https://stackoverflow.com/questions/3338415/what-does-partition-by-1-mean

반응형