본문 바로가기
SQL

sqld 공부 ( 2 과목 : SQL 활용 )

by 뱅뱅뱅뱅뱅 2024. 11. 9.
서브쿼리

 

또 하나의 테이블

(SELECT문의 결과)

 

서브쿼리는 메인쿼리 사용가능

메인쿼리에서는 서브쿼리 사용 불가

메인이 서브쿼리보다 먼저 실행되기 때문

 

  • 연관 서브쿼리
    • 메인쿼리의 컬럼을 서브쿼리에서 사용
  • 비연관 서브쿼리
    • 메인쿼리의 컬럼을 서브쿼리에서 사용하지 않음

 

종류

  • 스칼라 서브쿼리
    • SELECT 문의 칼럼 입력 위치
  • 인라인 뷰
    • FROM 절의 테이블 입력 위치
    • 동적으로 테이블 생성
  • 중첩 서브쿼리
    • WHERE, HAVING (조건절)의 칼럼 또는 테이블 입력 위치

 

 

 

 

 

그룹함수

 

GROUP BY 절에 따른 경과에 대해서 그룹 별로 연산을 수행하는 함수

집계함수 외에 ROLLUP, CUBE, GROUPPING SETS

 

소계란

if CYL 4, 6, 8 이 있으면

4의 총계수

6의 총계수

8의 총계수

를 소계라 한다.

 

  • ROLLUP
    • ROLLUP (CYL, GEAR)
      • cyl과 gear의 조합별 집계
      • cyl에 대한 소계 (gear를 무시한 부분 합계)
      • 전체 행에 대한 합계 (cyl과 gear 모두 무시)
    • GROUPING SETS(CYL, GEAR, (CYL), ())  같은 의미
  • CUBE
    • CUBE (CYL, GEAR)
      • cyl과 gear의 조합별 집계
      • cyl 값에 대한 전체 gear의 소계 (gear 무시)
      • gear 값에 대한 전체 cyl의 소계 (cyl 무시)
      • 전체 cyl과 gear의 합계 (모든 값 무시)
      • 만들 수 있는 가능한 모든 그룹 조합에 대해 합계와 부분 합계(소계)를 제공
    • GROUPING SETS(CYL, GEAR, (CYL, GEAR), ()) 과 같은 의미
  • GROUPPING SETS
    • GROUPPING SETS(CYL, GEAR)
      • CYL 소계
      • GEAR 소계

 

 

 

 

윈도우 함수

 

순위함수

  • RANK
    • 1, 2, 2, 4, 4, 4, 7, ......
  • DENSE_RANK
    • 1, 2, 2, 3, 3, 3, 4, ......
  • ROW_NUMBER
    • 1, 2, 3, 4, 5, 6, 7,  ......

SELECT RANK() OVER(ORDER BY COUNT(*) DESC) 

PARTITION도 가능

 

집계함수

 

SELECT MAX(SALARY) OVER(PARTITION BY JOB)

ORDER BY 도 가능

 

JOB 컬럼 그룹바이한 후 MAX 값 추출

 

 

 

 

 

Top N 쿼리

 

ROWNUM 함수

 

행에 순차적인 번호를 붙여주는 함수

중간에 값을 건너뛰고 가져올 수 없음

WHERE 절에서 사용

 

WHERE = ROWNUM <= 5;  ->  1~ 5

 

WHERE = ROWNUM = 5;  ->  아무런 결과를 가져오지 못함

 

 

 

 

PIVOT / UNPIVOT

 

 

 

 

 

 

 

정규표현식

 

메타 문자

 

[] 대괄호 안에 있냐 없냐에 따라 의미가 달라짐

 

  • \
    • \n 줄바꿈
  • ^
    • ^The: The로 시작하는 문자열
  • $
    • $ing: ing로 끝나는 문자열
  • .
    • 임의의 한 문자
    • a.b: acb, a-b, a1b
  • ?
    • 선행문자 0 or 1
    • no?: n, no
    • ? 앞 문자가 있냐 없냐
  • *
    • 선행문자 0 개 이상
    • no*: n, no, noooooo...
  • +
    • 선행 문자 1개 이상
    • no+: no, nooooooo...
  • |
    • 선택적 일치
    • a|b: a, b
  • []
    • 대괄호 안의 문자들 중 하나와 일치
    • [abc]: a, b, c
  • [-]
    • 연속 문자의 범위 지정
    • [a-b]: a~z
  • [^]
    • 대괄호 안의 문자들을 제외한 나머지 문자들 중 하나와 일치
    • [^abc]: a, b, c를 제외한 나머지 문자
  • ()
    • 한 단위로 취급
    • (ab): ab

 

 

 

Oracle의 정규표현신

 

  • REGEXP_LIKE
    • LIKE 연산
  • REGEXP_REPLACE
    • 문자열 대체
  • REGEXP_INSTR
    • 문자열 검색 후 위치 반환
  • REGEXP_SUBSTR
    • 부분 문자열 반환
  • REGEXP_COUNT
    • 특정 패턴의 문자열 개수 반환

 

 

 

 

 

COL1 COL2
AA 1
AA 1
AA 2
BB 2
BB 3

 

SELECT COUNT(COL1), COUNT(COL2)

FROM (SELECT DISTINCT COL1, COL2

             FROM TBL);

 

DISTINCT 는 행 기준으로 중복 처리

 

답 4, 4

 

 

 

'SQL' 카테고리의 다른 글

SQLD 마무리  (1) 2024.11.12
sqld 공부 ( 2 과목 : 관리구문 )  (0) 2024.11.10
sqld 공부 ( 2 과목 : SQL 기본 )  (1) 2024.11.03
sqld 공부 ( 1 과목 : 데이터 모델링의 이해 )  (4) 2024.11.02