oracle 조회: 그룹 조회, 각 그룹의 첫 번째 기록 꺼내기

1695 단어
type 필드에 따라 그룹을 나누고,code 정렬하여, 각 그룹의 첫 번째 기록을 꺼냅니다
 
방법1:
 
select type,min(code) from group_info  group by type;
 
주의: select 뒤에 있는 열은 그룹 by 자구에 있거나 집합 함수로 포함해야 합니다. 그렇지 않으면 문법 오류가 발생할 수 있습니다.
 
방법2:
 
SELECT * FROM( SELECT z.type , z.code ,ROW_NUMBER() OVER(PARTITION BY z.type ORDER BY z.code) AS code_id FROM group_info z ) WHERE code_id =1;
 
여기에 언급된 오버 ()는oracle의 분석 함수입니다
sql reference 문서 참조:
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.
함수를 해석하는 마지막 작업에서 마지막 ORDER BY 자구를 제외한 질의를 수행합니다.모든 연결 및 지역, GROUP BY 및 이전에 분석 처리 기능을 완료한 약관이 있습니다.따라서 해석 함수는 선택 목록이나 ORDER BY 자문에만 나타날 수 있습니다.
구문 구조:
 
analytic_function ([ arguments ]) OVER
 (analytic_clause)

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

 
즉, 함수명([매개 변수]) 오버([구역 자구] [정렬 자구[슬라이딩 창 자구])
 
여기PARTITION BY가 안내하는 구역 자구는 집합 함수 중의 그룹 by와 유사하며, 정렬 자구는 select 문장 중의order by로 볼 수 있습니다.

좋은 웹페이지 즐겨찾기