본문 바로가기

데이터베이스68

SQL 데이터분석함수 GROUPING SETS, ROW_NUMBER - 집계할 컬럼을 직접 선택해서 추가 집계 ▼ 부서 번호, 직업, 부서 번호별 총 월급, 직업별 총 월급, 전체 총 월급 출력 ▶ GROUPING SETS 괄호 안에 집계하고 싶은 컬럼명 기술하면 기술한대로 결과 출력됨 ▷ () 는 전체 - 위 쿼리에서는 () 전체, (deptno)부서별, (job) 직업별 ▷ 여기는 deptno+job의 집계 , () 전체 - 간단하게 본다면 ROLLUP과 결과는 동일하게 나옴 - 출력되는 순서대로 순위를 부여 : pseudocolumn(Oracle 내 가상컬럼)의 ROWNUM(데이터에 조회순서대로번호 매기기)와 비슷 : RANK, DENSE_RANK와는 다름 관련 내용 ▶ https://dev-adela.tistory.com/284 ▼ 사원번호,이름,연봉,순위, 번호.. 2023. 12. 18.
SQL 데이터분석함수 SUM OVER, RATIO_TO_REPORT, ROLLUP, CUBE - 데이터 누적해서 출력 ▼ 직업이 ANALYST, MANAGER인 사원들의 사원번호, 이름, 월급, 월급 누적치 출력하는 쿼리 ▶ OVER ( ) - 값을 누적할 윈도우 지정 ▷ ORDER BY empno를 통해 사원번호를 오름차순 정렬. 정렬된 것을 기준으로 sal 누적 출력 윈도우 기준 윈도우 방식 설명 ROWS UNBOUNDED PRECEDING 맨 첫번째 행 가리킴 UNBOUNDED FOLLOWING 맨 마지막 행 가리킴 CURRENT ROW 현재 행 가리킴 ▷ Between unbounded preceding and current row는 맨 첫번째부터 현재까지의 값. ▶ 위 쿼리를 보면 - BLAKE 누적치 는 JONES + BLAKE CLARK 누적치 는 JONES + BLAKE + CLA.. 2023. 12. 15.
SQL Row를 column으로 출력 SUM+DECODE, PIVOT, UNPIVOT - 테이블의 ROW를 column으로 출력하려면 해당 함수를 사용해야함 ▼ 최종 결과 출력물 ▶ 일단 SUM을 제외하고 DECODE만 사용해서 부서 번호가 10이면 월급이 출력되게 해봄 쿼리를 살펴보면 ▷ deptno가 10인 사람의 sal을 "10"이라고 불리는 column에 DECODE를 사용해서 출력해라 (나머지는 NULL이다) ▼ 다음 쿼리는 직업, 직업별 토탈 월급을 출력하는데 합쳐서 하나로 출력해보기 ▷ 요거는 직업을 다 알고 있으니까 작성된 쿼리이지만 모르면 PL/SQL을 사용해야함. PL/SQL은 https://velog.io/@bahar-j/PLSQL 참고 ▼ 위에서 한 직업별로 토탈월급 출력하고나서 각 부서 번호별로 직업의 월급 분포를 보기 위해 추가해봄 ▷ 분포도를 보면 ANALYST.. 2023. 12. 12.
SQL NTILE,CUME_DIST,LISTAGG,LAG, LEAD - 등급 출력. ▶ 월급의 등급을 4등급으로 나눠서 출력해봄 (균등하게 1등급은 0~25% 2등급은 25~50%, 이런식으로) ▶ NTILE( ) 에 숫자를 4를 쓰면 4등급, 5를 쓰면 5등급으로 나누어짐. ▷ 100%를 나눠서 등급을 매겨줌 ▷ order by 뒤에 nulls last는 월급이 높은 것부터 출력된 후에 NULL을 맨 아래에 출력하겠다는 얘기. - 데이터 순위의 비율을 출력 ▶ 월급의 순위와 순위의 비율을 출력하자면 아래와 같음 ▷ 사원 KING의 0.07인 것은 1/14(총14행)로 계산된 결과, 2등 2명은 3/14(2명이니까 1등1명 + 2등 2명) ▶ 파티션바이써서 직업별로 순위 비율 출력해보면 - 특정 컬럼에 속한 데이터를 가로로 한 칸에 출력 ▼ LISTAGG 함수를 사용해 .. 2023. 11. 29.