Database(25)
-
[ 분석함수 ] PARTITION BY
[ PARTITION BY ] - SUM 을 할 수 있는 범위를 제한한다. - GROUP BY 를 사용하지 않고 그룹을 묶어서 연산을 할 수 있다. ex) ID 별로 SALES 의 합계를 볼 수 있다. SELECT ID, SUM(SALES) OVER (PARTITION BY SALES) FROM ORDERS WHERE YEAR = '2022' ex) RANK 함수와 조합하면 그룹의 순위를 볼 수 있다. SELECT DEPNO, ID, RANK() OVER (PARTITION BY DEPNO ORDER BY SALES DESC) AS RANK FROM ORDERS
2022.02.17 -
[ 분석함수 ] RANK vs DENSE_RANK
[ RANK() ] - 1등이 2명일 때, 다음은 3등이 된다. [ DENSE_RANK() ] - 1등이 2명일 때, 다음은 2등이 된다. (건너뛰는 번호가 없음) ※ ROW_NUMBER() - 같은 점수라도 1등은 단 한명이다. (일련번호 생성)
2022.02.17 -
ORACLE Tips
[ 테이블 컬럼정보 ] SHOW FULL COLUMNS FROM TABLE_NAME
2022.02.15 -
DISTINCT vs GROUP BY
[ DISTINCT vs GROUP BY ] 단순그룹핑 vs 그룹핑 + 정렬 정렬 작업이 필요 없을 경우 DISTINCT 를 사용하는 것이 성능상 좋다. DISTINCT 는 집계 함수가 필요한 경우에는 단순 그룹핑이더라도 GROUP BY 를 사용해야 한다.
2022.02.15 -
[ PIVOT ] 행을 열로 바꾸기
프로젝트 시, 조회기간 일자별 통계 데이터 추출할 때 사용했었다. [ PIVOT ] SELECT * FROM ( PIVOT 대상 쿼리문 ) AS A PIVOT ( 그룹함수(기준컬럼) FOR 대상컬럼 IN ([],[]...) AS B [ UNPIVOT ] WITH [PIVOT_TABLE] AS ( SELECT... ) SELECT [컬럼] FROM PIVOT_TABLE UNPIVOT ( [컬럼] FROM [기준컬럼] IN ([컬럼]...)) AS [PIVOT명] ex) DECLARE @SQL NVARCHAR(MAX) = '' ,@SQL1 NVARCHAR(MAX) = '' SELECT @SQL = @SQL + '[' + CONVERT(VARCHAR, A.CDATE+A.ADDNUM) + '],', @SQL1 ..
2022.02.15 -
[ STUFF / FOR XML PATH ] 여러행 하나의 행으로 합치는 방법
[ STUFF ] - 문자열의 위치와 길이를 지정하여 다른 문자로 치환하는 함수. - 예시 : STUFF([문자열], [위치], [길이], [치환할 문자]) [ FOR XML PATH ] - 쿼리의 실행결과 데이터를 XML 형식으로 표현 - 예시 : FOR XML PATH([row element명]) ex) CASE WHEN COUNT(*) > 1 THEN STUFF( ( CASE WHEN * 'S' THEN ( SELECT (CASE WHEN *='S' THEN ',Q' ELSE ',' END) + * FROM ( SELECT CONCAT(*,'~',*) AS * , * FROM ( SELECT MIN(*) AS * , MAX(*) AS * , MAX(*) AS * FROM ( SELECT * , * ..
2022.02.15