2024-10-16 TIL
오늘 배운 것
-
html의 스크립트를 작성할 때 스크립트는 type에 따라 여러 종류 작성할 수 있음을 알았다. 이 때 그냥 적는 것과 module 값을 적을 때의 값이 다르기에 용법을 잘 알아야 하고, 데이터를 불러오는 순서도 파악할 수 있어야만 한다.
-
join을 이용해서 문제룰 푸는 것을 배웠다. 이걸로 잠시 두고 있던 SQL 문제를 풀 수 있게 되었다.
10번 문제
1. 현재 있는 총 부서의 수를 구하는 쿼리
= select count(name) from departments;
2. 각 직원들이 어느 부서에 소속되어 있는지 나열
- select e.name, d.name
from employees e
inner join departments d
on e.department_id = d.id;
3. 기술팀 부서에 속한 사람들 나열
select e.name
from employees e
inner join departments d
on e.department_id = d.id
where d.name = “기술팀”;
4. 각 부서 별로 사람이 얼마나 되는지 나열
select d.name, count(e.name)
from employees e
inner join departments d
on e.department_id = d.id
group by d.name;
5. 직원이 없는 부서의 이름을 나열하기
select sol.dep_name
from
(
select d.name as dep_name, count(e.name) as emp_count
from departments d
left join employees e
on d.id = e.department_id
group by d.name
) as sol
where sol.emp_count = 0;
6 마케팅 팀 부서에만 속한 사원 이름 나열하기
select e.name as emp_name from departments d inner join employees e on d.id = e.department_id where d.name not in (select d.name from departments where d.name != “마케팅팀”);
마지막 문제
- 모든 주문의 주문 ID와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요!
select o.product_id, p.name from products p inner join orders o on p.id = o.product_id;
- 총 매출(price * quantity의 합)이 가장 높은 상품의 ID와 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요!
select sol.pname, max(sol.sum_p) from ( select p.name as pname, (p.price * o.quantity) as sum_p from orders o join products p on p.id = o.product_id ) as sol group by sol.pname limit 1;
-
각 상품 ID별로 판매된 총 수량(quantity)을 계산하는 쿼리를 작성해주세요!
-
2023년 3월 3일 이후에 주문된 모든 상품의 이름을 나열하는 쿼리를 작성해주세요!
-
가장 많이 판매된 상품의 이름을 찾는 쿼리를 작성해주세요!
-
각 상품 ID별로 평균 주문 수량을 계산하는 쿼리를 작성해주세요!
-
판매되지 않은 상품의 ID와 이름을 찾는 쿼리를 작성해주세요!