id
|
department_id
|
name
|
1
|
101
|
르탄이
|
2
|
102
|
배캠이
|
3
|
103
|
구구이
|
4
|
101
|
이션이
|
위의 테이블은 employees이다
id
|
name
|
101
|
인사팀
|
102
|
마케팅팀
|
103
|
기술팀
|
위의 테이블은 departments이다
38. 현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!
SELECT COUNT(*) FROM departments;
39. 모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!
//테이블 이 2개 인 상태에서는 JOIN함수를 사용해야 한다
//이경우에는 겹치는 데이터가 있기 떄문에, JOIN ON 을 사용 할 수 있다.
SELECT e.name AS employees_name, d.name AS department_name FROM employees e
JOIN departments d ON e.department_id = d.id;
//별칭을 사용하여 employees.name을 e.name으로 줄엿다.
40. '기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
SELECT e.name AS employees_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.name) AS employees_num
FROM departments d JOIN employees e ON e.department_id = d.id;
//만약 departments.name 에 있는 팀 이름이 전부 유니트 하다면 그룹화를 하지 않아도 된다.
//그룹화를 만약 하게 된다면
SELECT d.name AS department_name, COUNT(e.name) AS employees_num
FROM departments d JOIN employees e ON e.department_id = d.id GROUP BY d.name;
42. 직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!
SELECT d.name AS department_name FROM departments d LEFT JOIN employees e
ON d.id = e.department_id WHRER e.department_id IS NULL;
*/LEFT JOIN은 아래에 설명. department테이블에 employees 테이블을 비교하여 e.department_id에
없는 id를 찾아서 NULL을 만들면 그것을 반환.*
- INNER JOIN(JOIN) - 두 테이블에서 일치 하는 데이터만 반환
-LEFT JOIN - 우측의 모든 데이터 테이블과 좌측 데이터 테이블 에도 있는 데이터 반환
-RIGHT JOIN - 좌측의 모든 데이터 테이블과 우측 데이터 테이블 에도 있는 데이터 반환
-FULL JOIN - 두 테이블에서의 모든 데이터 반환
43. '마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
SELECT d.name AS department name, e.name AS employees_name
FROM departments d JOIN employees e ON d.id = e.department_id
WHERE d.name = '마케팅팀';
'내일배움캠프 > 사전캠프 강의 (SQL)' 카테고리의 다른 글
생각해봅시다 (MISSION 1) (0) | 2024.09.05 |
---|---|
마지막 연습 문제! (1) | 2024.09.05 |
9) 아프면 안됩니다! 항상 건강 챙기세요! (1) | 2024.09.04 |
8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다. (0) | 2024.09.04 |
7) 랭크게임 하다가 싸워서 피드백 남겼어요.. (2) | 2024.09.04 |