
[백문이불여일타] 데이터 분석을 위한 중급 SQL
참고 링크 : w3schools
COUNTSELECT COUNT(DISTINCT name)

SUMSELECT SUM(price)SUM) 사용 가능AVGSELECT AVG(visits)NULL값 주의NULL값을 0으로 처리하고 싶을 때SELECT SUM(visits)/COUNT(*)
MIN / MAXSELECT MIN(price)SELECT MAX(price)SELECT문에서 +, - 등 연산 가능

GROUP BYGROUP BY 표현하는건 비추천ORDER BY 함께 사용 가능



HAVINGWHERE 사용할 때 목적 중요GROUP BY 하기 전에 WHERE문 실행GROUP BY로 묶인 결과물에 필터링 걸고 싶을 때 HAVING 사용AS 사용 가능

CASESELECT CASE
WHEN ? THEN ?
WHEN ? THEN ?
ELSE
END
FROM



Tip! 추가 내용
CASE를 활용한 테이블 피봇



참고 링크 : SQL Joins Visualizer
INNER JOIN


Tip! ERD란?
- Entity Relationship Diagram(ERD)는 테이블 간의 관계를 설명해주는 다이어그램이라고 볼 수 있으며, 이를 통해 프로젝트에서 사용되는 DB의 구조를 한눈에 파악할 수 있음
- 즉, API를 효율적으로 뽑아내기 위한 모델 구조도라고 생각하면 됨



OUTER JOIN (LEFT, RIGHT)INNER JOIN을 제외한 나머지는 다 OUTER JOINLEFT (OUTER) JOINJOIN을 하겠다는 뜻



참고 사항
- 예제 사이트에서
LEFT JOIN실행시 확인되는 CustomerID의null은 해당 사이트 내부의 오류 때문에 확인되는 결과- 올바른 MySQL 인터프리터의 경우
JOIN되는 테이블에 값이 없다고 해서 기준이 되는 테이블에 있는key값이null값으로 반환되는 경우는 없음

RIGHT (OUTER) JOINLEFT (OUTER) JOIN 사용LEFT (OUTER) JOIN만 사용했을 때 해석이 더 쉽기 때문

SELF JOINAS 붙여서 각각의 테이블 구분해서 사용

Tip! MySQL 시간 더하기 • 빼기
DATE_ADD(기준날짜, INTERVAL)
SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND)SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE)SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR)SELECT DATE_ADD(NOW(), INTERVAL 1 DAY)SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH)SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR)SELECT DATE_ADD(NOW(), INTERVAL -1 YEAR)DATE_SUB(기준날짜, INTERVAL)
SELECT DATE_SUB(NOW(), INTERVAL 1 SECOND)
UNION


UNION ALLTip! 추가 내용
EXCEPT (MINUS)INTERSECT
RIGHT (OUTER) JOINFULL OUTER JOIN
