Notice
Recent Posts
Recent Comments
Link
«   2026/09   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

사전 캠프 4일차 본문

Today I Learned

사전 캠프 4일차

seaking110 2024. 11. 22. 17:37

오늘은 어제 못푼 sql 달리기반 문제 5번 2개를 먼저 풀려고 한다!

 

Lv.5 가장 많이 팔린 품목은?

각 고객이 구입한 총 금액과 주문 수를 구하는 문제로 당연히 고객id로 group by를 해야하고 customer 테이블의 고객 이름 orders 테이블에서 주문수와 총 구매 금액을 위한 order 테이블의 수량과 products 테이블의 price 컬럼이 필요했다.

3곳 모두에서 필요한게 있었기 때문에 단순하게 3개의 테이블을 조인 시켜서 풀었다.

 

내가 제출한 답

select  c.CustomerName , sum(p.Price * o.Quantity) as TotalAmount, count(o.CustomerID) as OrderCount
from orders o 
join products p on p.ProductID = o.ProductID  
join customers c on o.CustomerID = c.CustomerID  
group by o.CustomerID order by o.CustomerID ;

 

맨처음엔 서브쿼리를 써서 되게 복잡하게 생각했지만 단순하게 생각하니 쉽게 풀렸던 문제였다!

 

 

어제 풀었던 Lv 4 문제가 상당히 도움이 됐다!  정말 정말 어려웠지만 그래도 검색하지 않고 직접 풀었다! 이제는 서브쿼리를 그래도 조금 쓸 줄 안다고 생각한다! 

 

내가 제출한 답

select Category , ProductName as Top_Product,  Quantity as TotalSold from 
(select p.ProductName, p.Category, sum(o.quantity) as Quantity,
rank() over (partition by p.Category order by sum(o.Quantity) desc) as rn
from orders o join products p on p.ProductID = o.ProductID group by o.productID
) as a
where rn = 1;

 

Lv.5 예산이 가장 큰 프로젝트는?

 

이제 가장 높은 한 줄만 출력하는건 정말 쉽다고 느껴졌다 확실히 도움이 되는 느낌이라 뿌듯하다.

rank() over (patition by 칼럼명) 이건 정말 꼭 외워두자! 아주 아주 유용하다!

 

내가 제출한 답

select name, department, salary from 
(select name, department, salary, rank() over(partition by department order by salary desc) as rn
from employees) as a
where rn = 1;

 

 

 

projecs 테이블과 emplyees 테이블을 조인해야하는데 중복되는 칼럼이 없다! 조인을 위해 양쪽 테이블의 모두 중복된 칼럼을 가지고 있는 EmplyeeProjects 테이블을 중간 다리 역할로 이용하자! 그외에 나머지 어려운 부분은 없다!

 

내가 제출한 답

select e.Name, p.ProjectName, p.Budget 
from employees e 
join employeeprojects ej on e.EmployeeID = ej.EmployeeID 
join projects p on p.ProjectID = ej.ProjectID 
where p.Budget >= 10000 order by p.ProjectName;

 

이로써 달리기반 문제를 모두 풀었는데 이젠 서브 쿼리, rank에 대한 부분도 확실히 감을 잡은 느낌이고 Lv5의 예산이 가장 큰 프로젝트 보다 Lv.4 문제들이 더 난이도 있었던거 같다! 쿼리문을 풀다 보니 확실히 재밌고 데이터를 만지고 추출해 내는 부분이 상당히 재밌게 느껴져서 좋았다!

 

 

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

사전 캠프 6일차  (1) 2024.11.26
사전 캠프 5일차  (0) 2024.11.25
사전 캠프 3일차  (0) 2024.11.21
2일차  (1) 2024.11.20
1일차  (1) 2024.11.19