데이터 놀이터
SQL 중급 강의 정리 본문
728x90
1. 집계함수
- 특징 : NULL값을 제외하고 집계
- 종류
- COUNT
- SUM
- MIN, MAX
- AVG
- NULL 값을 특정 값(0)으로 처리하고 싶을 경우, AVG가 아니라 계산식을 직접 써줘야함
- 예시
SELECT AVG(CASE WHEN weight IS NULL THEN 0 ELSE weight END)
FROM Players;
2. GROUP BY
- 조건을 넣을 경우, HAVING과 WHERE 둘 중 무엇을 써야할지 고민할 것
- WHERE : 데이터 추출 조건, HAVING : 그룹화 조건
- SQL문 실행 순서(https://nohriter.tistory.com/129)
- FROM : 데이터를 추출할 테이블 확인
- WHERE : 데이터 추출 조건 확인
- GROUP BY : 그룹화할 컬럼 확인
- HAVING : 그룹화 조건 확인
- SELECT : 데이터 추출
- ORDER BY : 데이터 정렬
3. CASE
- CASE WHEN ~ THEN ~ END
- 조건에 OR, AND 활용 가능
- SELECT에 CASE를 통해 만든 열로 Group by 가능
- 문제 풀때 결과를 제대로 확인하기 위해서 end 이후에 확인할 값 쓰기
- WHEN 순서 중요
- CASE를 통해 Table pivoting도 가능
4. JOIN
- INNER JOIN : 교집합(두 테이블에 데이터가 모두 존재할 경우)
- LEFT, RIGHT
- 뒤에 OUTER가 생략되어 있음
- 보통 실무에서는 LEFT로 많이 처리
5. UNION
- UNION : 중복된 값을 제거하고 합집합
- UNION ALL : 중복된 값을 포함하여 모두 나타냄
- MySQL에서는 FULL OUTER JOIN이 없기 때문에 LEFT, RIGHT 조인한 걸 UNION으로 합쳐주면 됨
6. 기타
- 날짜 연산 : DATE_ADD, DATE_SUB (https://extbrain.tistory.com/58)
- 개념 종합 문제 : https://www.hackerrank.com/challenges/symmetric-pairs/problem?isFullScreen=true
728x90
'SQL' 카테고리의 다른 글
SELECT - 12세 이하인 여자 환자 목록 출력하기 (0) | 2023.08.17 |
---|---|
GROUP BY - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2023.08.15 |
GROUP BY - 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기 (0) | 2023.08.15 |
GROUP BY - 카테고리 별 도서 판매량 집계하기 (0) | 2023.08.15 |
SQL 기본 강의 정리 (0) | 2023.08.14 |