()에 대한 이해 및 파티션 분할 시도
기능별로 머리를 감싸고 칸막이를 하려고 합니다.여기 제가 이해하지 못하는 예가 있습니다.
제가 가지고 있는 데이터는 다음과 같습니다.
SALESORDERID ORDERDATE
43894 08/01/2001
43664 07/01/2001
43911 08/01/2001
43867 08/01/2001
43877 08/01/2001
44285 10/01/2001
44501 11/01/2001
43866 08/01/2001
43895 08/01/2001
43860 08/01/2001
이 쿼리를 실행할 때:
select Row_Number() over(partition by orderdate order by orderdate asc)
as Rownumber, salesorderid, orderdate
from test2
order by rownumber
결과는 다음과 같습니다.
ROWNUMBER SALESORDERID ORDERDATE
1 43664 07/01/2001
1 43911 08/01/2001
1 44109 09/01/2001
1 44483 11/01/2001
1 44285 10/01/2001
2 43867 08/01/2001
2 44501 11/01/2001
3 43895 08/01/2001
4 43894 08/01/2001
5 43877 08/01/2001
누가 나에게 이 질문을 설명해 줄 수 있습니까?저는 SQL을 처음 접하는 것이 아니라 윈도우 설정에 어려움을 겪었고 이 문제를 이해할 수 없었습니다.
주문 날짜별로 주문해 보십시오. 결과를 보다 쉽게 확인할 수 있습니다.
select Row_Number() over(partition by orderdate order by orderdate asc)
as Rownumber, salesorderid, orderdate
from test2
order by orderdate;
를 제공해야 합니다(명확하게 하기 위해 빈 줄을 추가했습니다).
ROWNUMBER SALESORDERID ORDERDATE
1 43664 07/01/2001
1 43911 08/01/2001
2 43867 08/01/2001
3 43895 08/01/2001
4 43894 08/01/2001
5 43877 08/01/2001
1 44109 09/01/2001
1 44285 10/01/2001
1 44483 11/01/2001
2 44501 11/01/2001
결과는 순서 날짜가 동일한 행 집합인 '파티션'으로 구분됩니다.그것이 '주문 날짜별 분할'이라는 의미입니다.
파티션 내에서 행은 '(partition by order date order as)'의 두 번째 절에 따라 순서 날짜별로 정렬됩니다.파티션 내의 모든 행의 주문 날짜가 동일하기 때문에 그다지 유용하지 않습니다.따라서 파티션 내 행의 순서는 랜덤합니다.더 재현 가능한 결과를 얻으려면 절별 파티션 내에서 sales order id로 주문해 보십시오.
row_number()는 각 파티션 내에서 행 순서를 반환합니다.
그partition by orderdate
즉, 동일한 레코드를 가진 다른 레코드와 비교하는 것입니다.orderdate
예를 들어, 5개의 레코드 중에서orderdate = '08/01/2001'
가질 수 있는row_number() = 1
가질 수 있는row_number() = 2
등등.
그order by orderdate asc
파티션 내에서 다음 순서로 행-키워드를 할당해야 함을 의미합니다.orderdate
이미 파티션을 분할하고 있기 때문에 이 예제에서는 아무런 영향도 주지 않습니다.orderdate
따라서 파티션 내의 모든 레코드는 동일합니다.orderdate
(글을 쓰는 것과 같습니다.SELECT ... FROM t WHERE c = 6 ORDER BY c
선택한 모든 레코드의 값은 다음과 같습니다.c
그래서ORDER BY c
아무것도 하지 않습니다.)파티션 내에서 다음과 같은 작업이 수행됩니다.row_number()
는 임의입니다. 각 행의 번호는 다르지만 어떤 행이 어떤 번호를 가질 것인지에 대한 보장은 없습니다.
언급URL : https://stackoverflow.com/questions/9315070/trying-to-understand-over-and-partition-by
'programing' 카테고리의 다른 글
Firebase 데이터를 Java 개체로 변환하는 방법...? (0) | 2023.06.10 |
---|---|
다른 워크북에서 매크로 실행 (0) | 2023.06.10 |
C의 함수에서 로컬 변수 반환 (0) | 2023.06.10 |
스크킷 학습 의사 결정 트리에서 의사 결정 규칙을 추출하는 방법은 무엇입니까? (0) | 2023.06.10 |
C 전처리기 교체 (0) | 2023.06.10 |