2025/08/22 4

[SQL/2과목] PIVOT절과 UNPIVOT절

이번에는 PIVOT과 UNPIVOT에 대해 알아보겠다.PIVOTPIVOT은 행을 열로 바꾸는 기능이다. 여러 행에 걸쳐있는 데이터를 하나의 행에 여러열로 펼치는 것이다. 구문을 봐보자SELECT 컬럼목록FROM ( SELECT 원본컬럼들 FROM 테이블명)PIVOT ( 집계함수(값컬럼) FOR 기준컬럼 IN ( '값1' AS 새컬럼1, '값2' AS 새컬럼2, ... )); FROM절에서, PIVOT할 원래 데이터를 선택한다그리고 PIVOT에서 집계할 값을 선택하고, 열로 만들 컬럼과 값을 지정해준다. 바로 예시를 보는게 나을듯하다! 아래는 테이블과 구문이다.salespersonquateramount김철수Q1400김철수Q150김철수Q2550..

개발/sqld 2025.08.22

[SQL/2과목] 계층형 질의와 셀프조인

슬슬 2과목의 끝이 보인다.. 이번 포스팅은 계층형 질의와 셀프조인에 대해 정리해보겠다.계층형 질의 계층형 질의는 데이터간에 부모-자식 관계가 있는 트리 구조를 조회할 때 특화된 쿼리이다. 셀프조인은 한단계 위만 보여주는데, 계층형 질의는 최상위 계층부터 최하위 계층까지 전체 구조를 한 번에 볼 수 있다. ❓왜 셀프조인은 한단계 위를 보여줄까-> 내가 바보라그런지, 셀프조인은 같은 테이블끼리 조인하는건데 왜 윗단계지? 생각했는데 같은 테이블을 논리적으로 두개로, 다르게 보면서 쪼인하기때문에 한단계 확인이 가능하다!! 두개로 다르게 보면서 그 사이 관계를 연결해서 보기때문에 한단계 위를 확인할 수 있다! 얘 또한 벤더별로 구현 방식이 다르기때문에, 차이를 보자ORACLE계층형 질의를 매우 직관적으로 강력한..

개발/sqld 2025.08.22

[SQL/2과목] Top-N 쿼리

이번에는 Top-N 쿼리를 다뤄보겠다. 12시간 뒤가 시험이다... 이제야 이걸 정리하다니 😢Top-N 쿼리 특정 기준으로 정렬했을 때, 상위 N개의 행만 가져오는 쿼리다. 벤더마다 차이가 있어 이를 구분해야된다!!ORACLE오라클에서는 전통적으로 ROWNUM이라는 의사컬럼을 사용하거나, 최신 표준인 FETCH 구문을 사용한다.ROWNUM을 사용한 방식 ROWNUM은 SELECT된 결과 행에 순서대로 붙는 임시 번호표이다. 근데, 이 번호는 ORDER BY가 실행 전에 부여되기때문에, 반드시 인라인 뷰를 사용해 정렬을 먼저 수행해야된다!-- 인라인 뷰 사용했을 때SELECT *FROM ( SELECT emp_name, salary FROM employees ORDER BY salary ..

개발/sqld 2025.08.22

[SQL/2과목] 함수(2) - 다중행 함수(그룹함수, 윈도우함수)

이번 포스팅은 함수의 두번째 포스팅!! 다중행 함수 내용이다. 다중행 함수 다중행함수란 여러개의 행을 입력받아 단 하나의 결과값을 반환하는 함수이다. 다중행 함수는 크게 그룹함수, 윈도우함수로 나뉜다. 이를 봐보자.그룹함수그룹함수는 여러행을 하나의 그룹으로 묶어, 그 그룹에 대한 하나의 요약된 결과값을 반환하는 함수이다. 집계 함수사용 목적COUNT(*)NULL 값을 포함한 행의 수를 출력한다.COUNT(표현식)표현식의 값이 NULL인 것을 제외한 행의 수를 출력한다.SUM([DISTINCT | ALL] 표현식)표현식의 NULL 값을 제외한 합계를 출력한다.AVG([DISTINCT | ALL] 표현식)표현식의 NULL 값을 제외한 평균을 출력한다.MAX([DISTINCT | ALL] 표현식)표현식의 최..

개발/sqld 2025.08.22