Oacle 관련: 각 그룹의 첫 번 째 기록 을 어떻게 꺼 냅 니까?

Oacle 조회: 각 그룹의 첫 번 째 기록 을 꺼 내 type 필드 에 따라 그룹 을 나 누고 code 정렬 하여 각 그룹의 첫 번 째 기록 을 꺼 냅 니 다.
 
방법 1:
 
select type,min(code) from group_info group by type;
 
메모: select 뒤의 열 은 group by 자구 에 있 거나 취 합 함수 로 포함 되 어야 합 니 다. 그렇지 않 으 면 문법 오류 가 발생 할 수 있 습 니 다.
 
방법 2:
 
SELECT * FROM(SELECT z.type , z.code ,ROW_NUMBER()OVER(PARTITION BY z.type ORDER BY z.code) AS code_idFROM group_info z)WHERE code_id =1;
 
여기 서 언급 된 over () 는 Oacle 의 분석 함수 입 니 다.
 
sql 참조 문서:
 
Analytic functions compute an aggregate value based on a group of rows. They differ from aggregate functions in that they return multiple rows for each group.
 
Analytic functions are the last set of operations performed in a query except for the final ORDER BY clause. All joins and all WHERE , GROUP BY , and HAVING clauses are completed before the analytic functions are processed. Therefore, analytic functions can appear only in the select list or ORDER BY clause.
 
문법 구조:
 
analytic_function ([ arguments ])over
 (analytic_clause)

그 중 analyticclause 구 조 는 다음 과 같 습 니 다.
 
[ query_partition_clause ]
[ order_by_clause [ windowing_clause ] ]

 
즉, 함수 명 ([매개 변수]) over ([파 티 션 자구] [정렬 자구 [슬라이딩 창 자구]])
 
     여기 서 PARTITION BY 가 안내 하 는 파 티 션 절 은 그룹 함수 의 group by 와 유사 하 며 정렬 절 은 selection 문장의 order by 로 볼 수 있 습 니 다.

좋은 웹페이지 즐겨찾기