본문 바로가기
Data

[Mysql] SQL 왕초보 문법연습 +업데이트

by Dora the explorer 2024. 9. 5.
반응형

🥑 학습내용

** 240906 업데이트 ) 오답수정 및 대체 가능 코드 추가

 

 

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

38

현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!

 

select count(distinct name)

from departments

 

 

39

모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!

 

select e.name, d.name

from departments d left join employees e on d.id=e.department_id

** LEFT JOIN 대신 INNER JOIN을 사용해도 된다.

 

 

40

'기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!

 

select e.name,d.name

from departments d left join employees e on d.id=e.department_id

where d.name='기술팀'

 

41

부서별로 직원 수를 계산하는 쿼리를 작성해주세요!

 

select d.name,count(1) "부서별 직원 수"

from departments d left join employees e on d.id=e.department_id

group by d.name

 

 

42

직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!

 

select d.name

from departments d left join employees e on (d.id=e.department_id)

where e.department_id is NULL

 

43

'마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!

 

select e.name,d.name

from departments d left join employees e on (d.id=e.department_id)

where d.name='마케팅팀'

** INNER JOIN 

 

 

11) 마지막 연습 문제

44

모든 주문의 주문 ID와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요!

 

select o.id, p.name

from orders o left join products p on o.product_id=p.id

 

45

총 매출(price * quantity의 합)이 가장 높은 상품의 ID와 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요!

 

select p.id, sum(p.price*o.quantity) "총매출"

from orders o left join products p on o.product_id=p.id

group by p.id

order by sum(p.price*o.quantity) DESC

limit 1

 

46

각 상품 ID별로 판매된 총 수량(quantity)을 계산하는 쿼리를 작성해주세요!

 

select p.id, o.quantity sum(o.quantity) sum_q

from orders o left join products p on o.product_id=p.id

group by p.id

SELECT p.id, SUM(o.quantity) AS total_quantity 
FROM products p INNER JOIN orders o ON p.id = o.product_id 
GROUP BY p.id;

** 뭐야 풀다 졸았는지 총 수량도 못보고 상품 ID 별로(group by)로 묶지도 않았다.

 

 

47

2023년 3월 3일 이후에 주문된 모든 상품의 이름을 나열하는 쿼리를 작성해주세요!

 

select p.name,

o.order_date

from orders o left join products p on o.product_id=p.id

where o.order_date> '2023-03-03'

order by order_date

 

48

가장 많이 판매된 상품의 이름을 찾는 쿼리를 작성해주세요!

 

select p.name, o.quantity SUM(o.quantity) sum_q

from orders o left join products p on o.product_id=p.id

GROUP BY p.id 

order by

sum_q  

DESC

limit 1

** 가장 많이 판매된 상품

 

 

49

각 상품 ID별로 평균 주문 수량을 계산하는 쿼리를 작성해주세요!

 

select p.id, avg(quantity) avg_qt

from orders o left join products p on o.product_id=p.id

group by p.id

 

50

판매되지 않은 상품의 ID와 이름을 찾는 쿼리를 작성해주세요!

 

select p.id, p.name

from oders o left join products p on o.product_id=p.id

where o.id is NULL

 


진짜 진땀 빼면서 풀었다...** 모르는 함수가 사용된 경우보다 문제를 정확하게 파악 하지 못해서 틀린 경우가 많다. 연습을 통해 문제를 정확하게 파악하고 풀어나가는 연습을 해야겠다.

반응형