38. 현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!
SELECT COUNT(*) AS total_departments FROM departments; |
39. 모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!
SELECT e.name AS employee_name, d.name AS department_name FROM employees e --고용인(employees) 테이블을 ‘e’로 별칭 JOIN departments d ON e.department_id = d.id; |
40. '기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
SELECT e.name AS employee_name FROM employees e JOIN departments d ON e.department_id = d.id --테이블을 조인 한 후에 그 테이블 열을 읽어옵니다. WHERE d.name = '기술팀'; |
41. 부서별로 직원 수를 계산하는 쿼리를 작성해주세요!
SELECT d.name AS department_name, COUNT(e.id) AS employee_count FROM departments d LEFT JOIN employees e ON d.id = e.department_id GROUP BY d.id; |
42. 직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!
SELECT d.name AS department_name -- 열 이름 지정(부서 이름) FROM departments d LEFT JOIN employees e ON d.id = e.department_id -- 직원 없는 부서도 포함 열 생성 WHERE e.id IS NULL; -- 직원이 없는 부서 이름(d.name) 출력 |
43. '마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
SELECT e.name AS employee_name --직원 이름 출력 FROM employees e JOIN departments d ON e.department_id = d.id --부서 이름이랑 직원 이름이랑 연결 WHERE d.name = '마케팅팀'; |
풀이
39번
JOIN : 조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것입니다.
두 테이블의 조인을 위해서는 기본키(PRIMARY KEY, PK)와 외래키(FOREIGN KEY, FK) 관계로 맺어져야 하고, 이를 일대다 관계라고 합니다.
1) INNER JOIN(내부 조인) : 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 합니다.
SELECT 컬럼 FROM 테이블명1 INNER JOIN 테이블명2 ON 조인 조건 [WHERE 검색 조건] --INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식합니다. |
2) OUTER JOIN(외부 조인) : 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나옵니다.
SELECT <열 목록> FROM <첫 번째 테이블(LEFT 테이블)> <LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)> ON <조인 조건> [WHERE 검색 조건] /* OUTER JOIN의 종류 LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인입니다. RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인입니다. FULL OUTER JOIN: 왼쪽 외부 조인과 오른쪽 외부 조인이 합쳐진 것입니다. */ |
3) CROSS JOIN(상호 조인) : 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능입니다.
상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수만큼 됩니다.
카티션 곱(CARTESIAN PRODUCT)라고도 합니다.
SELECT * FROM <첫 번째 테이블> CROSS JOIN <두 번째 테이블> |
4) SELF JOIN(자체 조인) : 자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용합니다.
SELECT <열 목록> FROM <테이블> 별칭A INNER JOIN <테이블> 별칭B [WHERE 검색 조건] |
출처
https://teamsparta.notion.site/10-2-1102dc3ef51481f4b9d0ee616801c348
'내일배움 과제 > 기타 과제' 카테고리의 다른 글
모달 만들기 (0) | 2024.10.29 |
---|---|
걷기 SQL - 마지막 연습 문제 ! (0) | 2024.10.21 |
걷기 SQL - 9)아프면 안됩니다! 항상 건강 챙기세요! (0) | 2024.10.21 |
걷기반 SQL - 8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다. (0) | 2024.10.21 |
걷기반 SQL - 7) 랭크게임 하다가 싸워서 피드백 남겼어요… (0) | 2024.10.18 |