데이터 테이블은 용도에 따라 관리되고, 각 테이블에 꼭 필요한 필드로 구성하는 게 좋다. 따라서 하나의 테이블에서 모든 정보를 얻을 수 없는 경우가 많다.
예를 들어, 회원 정보 테이블에서는 회원별 주문 금액 등을 알 수 없다. 이를 구하기 위해서는 주문 관련 테이블과 연결(Join)이 필요하다. SQL의 JOIN은 엑셀의 VLOOKUP과 비슷한 기능이라고 할 수 있다.
1. Join의 종류는 두 가지
- Inner Join : 두 테이블의 교집합. 하나의 테이블에만 있는 user_id는 join 시 포함되지 않는다.
- Left Join : 테이블 A를 기준으로 테이블 B를 붙인다. 붙이는 순서에 따라 기준이 바뀌기 때문에 Inner Join보다 난이도가 높다. 테이블 A를 기준으로 NULL 값이 있는 데이터 확인이 가능하다. (고객별로 포인트 유무 확인 시, 포인트 관련 테이블과 조인하면 포인트가 없는 회원은 NULL로 표시됨)
2. 테이블을 조인할 땐, 먼저 기준이 되는 컬럼을 찾는다
- 아래의 경우, user_id를 기준으로 연결한 것
3. 테이블명 Alias(별명) 활용!
- Dbeaver 프로그램에서는 테이블명을 입력하고 엔터를 치면 옆에 자동으로 입력된다.
- 별명은 최대한 짧고 명확하게 써야 하고, 별명을 부여한 뒤에는 계속해서 어떤 테이블의 컬럼을 의미하는지 컬럼명 앞에 붙여준다.
4. 두 컬럼값을 기준으로 정렬도 가능
- 쉼표로 구분해서 정렬하고자 하는 값을 입력해주면 됨
5. 비중 구하기
- 엑셀처럼 컬럼명 기준 산식을 작성하고 round를 이용하여 반올림 처리하면 깔끔
6. 결과물 합치기
- 7, 8월 데이터가 나누어져 있는데 이를 하나의 표로 보고 싶다면 Union All 사용
- 연결하는 쿼리는 ( )로 묶어줌
- 합친 후에 SubQuery(서브쿼리)로 정렬을 다시 해주어야 함 (합친 후에는 합치기 전 order by가 무시됨)
'개발 공부 > SQL' 카테고리의 다른 글
SQL 서브쿼리(Subquery) 사용법 / where, select, from 절 (0) | 2022.11.21 |
---|---|
SQL로 간단한 통계 내기 (order by, group by) (2) | 2022.11.18 |
SQL 기본 문법 (스파르타코딩클럽 1주차 강의) (2) | 2022.11.16 |