2024.11.12 TIL(AI 9기)

SMALL

[퀘스트]

10) 이젠 테이블이 2개입니다

# 현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!
SELECT COUNT(*) as '총 부서 수'
FROM departments;

# 모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!
SELECT employees.name, departments.name AS department_name
FROM employees
JOIN departments ON employees.department_id = departments.id;
#JOIN은 두 테이블을 연결합니다. JOIN 테이블1 ON 테이블2

# '기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
SELECT employees.name
FROM employees
JOIN departments ON employees.department_id = departments.id
WHERE departments.name = '기술팀';

# 부서별로 직원 수를 계산하는 쿼리를 작성해주세요!
SELECT departments.name AS department_name, 
			COUNT(employees.id) AS employee_count
FROM departments
LEFT JOIN employees ON departments.id = employees.department_id
GROUP BY departments.name;

# 직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!
SELECT departments.name AS department_name
FROM departments
LEFT JOIN employees ON departments.id = employees.department_id
WHERE employees.id IS NULL;

# '마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
SELECT employees.name
FROM employees
JOIN departments ON employees.department_id = departments.id
WHERE departments.name = '마케팅팀';

 

 

마지막 연습 문제 !

# 모든 주문의 주문 ID와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요!
SELECT orders.id AS order_id, products.name AS product_name
FROM orders
JOIN products ON orders.product_id = products.id;

# 총 매출(price * quantity의 합)이 가장 높은 상품의 ID와 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요!
SELECT orders.product_id, SUM(products.price * orders.quantity) AS total_sales
FROM orders
JOIN products ON orders.product_id = products.id
GROUP BY orders.product_id
ORDER BY total_sales DESC
LIMIT 1;

# 각 상품 ID별로 판매된 총 수량(quantity)을 계산하는 쿼리를 작성해주세요!
SELECT orders.product_id, SUM(orders.quantity) AS total_quantity
FROM orders
GROUP BY orders.product_id;

# 2023년 3월 3일 이후에 주문된 모든 상품의 이름을 나열하는 쿼리를 작성해주세요!
SELECT products.name AS product_name
FROM orders
JOIN products ON orders.product_id = products.id
WHERE orders.order_date > '2023-03-03';

# 가장 많이 판매된 상품의 이름을 찾는 쿼리를 작성해주세요!
SELECT products.name AS product_name
FROM orders
JOIN products ON orders.product_id = products.id
GROUP BY products.name
ORDER BY SUM(orders.quantity) DESC
LIMIT 1;

# 각 상품 ID별로 평균 주문 수량을 계산하는 쿼리를 작성해주세요!
SELECT orders.product_id, AVG(orders.quantity) AS average_quantity
FROM orders
GROUP BY orders.product_id;

# 판매되지 않은 상품의 ID와 이름을 찾는 쿼리를 작성해주세요!
SELECT products.id, products.name
FROM products
LEFT JOIN orders ON products.id = orders.product_id
WHERE orders.id IS NULL;

 

 

[오늘의 소감]

팀스터디로 프로그래머스 문제들을 추가하고 난 이후로 할일이 너무 많아졌다. 휴

sql에서 join은 INNER JOIN, LEFT JOIN (또는 LEFT OUTER JOIN), RIGHT JOIN (또는 RIGHT OUTER JOIN), FULL JOIN (또는 FULL OUTER JOIN), CROSS JOIN이 있다. 퀘스트 풀이로 아무생각없이 join만 적어서 코드를 짰는데 실행이 됐다.

알고보니까 그냥 join을 쓰면 자동으로 INNER JOIN로 인식해서 출력한다는 것을 알게 되었다.

LIST

'Today I learned' 카테고리의 다른 글

Pythone3 Day 3 연산  (1) 2024.11.14
Pythone3 Day 2 출력, 연산  (1) 2024.11.13
Pythone3 Day 1 출력 문제  (0) 2024.11.12
2024.11.11 TIL(AI 9기)  (2) 2024.11.11
2024.11.10 TIL(주말)  (0) 2024.11.10