[SQL]TIL 7일차

Cherta·2024년 4월 24일
0

[TIL]

목록 보기
7/30

GROUP BY 후 결과값을 필터링

  • HAVING : GROUP BY에 의한 결과를 필터링 할 때 사용

  • WHERE와 HAVING의 차이

필터링 구문필터링 시점
WHEREGROUP BY 전 데이터 필터링
HAVINGGROUP BY 후 결과값을 가지고 데이터 필터링
SELECT 
	기준컬럼,
    집계함수
FROM 테이블명
WHERE 조건(생략가능)
GROUP BY 기준 컬럼
HAVING 조건식

SUB QUERY

  • 사용 이유

    • N번의 쿼리문 실행을 1번의 쿼리문으로 실행하기 위해 쿼리의 결과값을 가지고 추가 연산을 하기 위해 사용
    • JOIN, UNION 동작 수행을 대체 할 수 있는 방법 제공
  • 실행 순서

    • 안쪽에 위치한 쿼리(서브쿼리) → 바깥쪽에 위치한 쿼리(메인쿼리)
  • 서브쿼리의 종류

    • 중첩(일반) 서브쿼리
      • WHERE 절에서 사용
        • 서브쿼리의 결과에 따라 달라지는 조건절
    • 스칼라 서브쿼리
      • SELECT 절에서 사용
        • 하나의 컬럼처럼 사용
        • 스칼라 서브쿼리 이용을 위해서는, 서로 다른 테이블 필요
    • 인라인 뷰
      • FROM 절에서 사용
        • 하나의 테이블처럼 사용
        • AS 구문을 사용하여 명칭을 반드시 기재해야 함
        • JOIN 및 UNION 사용시 가장 유용하게 사용
-- 중첩 서브쿼리
SELECT column1, column2
FROM table1
WHERE column1 > (SELECT column2 FROM table1 WHERE column3 = 'value')
-- 스칼라 서브쿼리
SELECT column1
	(
    SELECT COUNT(*)
	FROM table1
	WHERE column2 = 'value'
) subquery
FROM table2
-- 인라인 뷰
SELECT *
FROM(
	SELECT 
    	t1.column1, 
        t2.column2
    FROM table1 t1 
    JOIN table2 t2 ON t1.column3 = t2.column3
) subquery
WHERE coulmn2 = 'value'

0개의 댓글