SQL강의
SQL Pivot table (여러개의 그룹별로 데이터분류)
max(if()) 로 max를 붙여주는게 특징
window function rank와 sum함수
rank () over(partition by a order by b) 순위
sum(a) over (partition by b) 전체합
sum(a) over (partition by b order by a) >> 누적합
sql퀘스트
# 현재 존재하고 있는 총 부서의 수를 구하는 쿼리를 작성해주세요!
SELECT count(*) '총_부서_수'
FROM departments
;
# 모든 직원과 그들이 속한 부서의 이름을 나열하는 쿼리를 작성해주세요!
SELECT e.name '직원',
d.name '부서이름'
FROM employees e
inner join departments d on e.department_id = d.id
;
# '기술팀' 부서에 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
SELECT e.name '직원이름'
FROM employees e
inner join departments d on e.department_id = d.id
WHERE d.name = '기술팀'
;
# 부서별로 직원 수를 계산하는 쿼리를 작성해주세요!
SELECT d.name '부서이름',
count(e.name) '직원 수'
FROM employees e
left join departments d on e.department_id = d.id
GROUP BY 1
# 직원이 없는 부서의 이름을 찾는 쿼리를 작성해주세요!
SELECT d.name '부서이름'
FROM departments d
left join employees e on e.department_id = d.id
WHERE e.name is null
# '마케팅팀' 부서에만 속한 직원들의 이름을 나열하는 쿼리를 작성해주세요!
SELECT e.name '직원이름'
FROM employees e
inner join departments d on e.department_id = d.id
WHERE d.name = '마케팅팀'
;
#1.모든 주문의 주문 ID와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요!
SELECT o.id '주문ID',
p.name '상품이름'
FROM products p
inner join orders o on p.id = o.product_id
;
#2.총 매출(price * quantity의 합)이 가장 높은 상품의 ID와 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요!
SELECT p.id 'ID',
sum(p.price * o.quantity) '총매출'
FROM products p
inner join orders o on p.id = o.product_id
group by 1
order by 2 desc
limit 1
;
#3.각 상품 ID별로 판매된 총 수량(quantity)을 계산하는 쿼리를 작성해주세요!
SELECT product_id,
sum(quantity) '총 수량'
FROM orders
group by 1
;
#4.2023년 3월 3일 이후에 주문된 모든 상품의 이름을 나열하는 쿼리를 작성해주세요!
SELECT p.name '상품이름'
FROM products p
inner join orders o on p.id = o.product_id
where o.order_date > '2023-03-03'
;
#5.가장 많이 판매된 상품의 이름을 찾는 쿼리를 작성해주세요!
SELECT p.name '상품이름',
sum(o.quantity) '판매수량'
FROM products p
inner join orders o on p.id = o.product_id
group by 1
order by 2 desc
limit 1
;
#각 상품 ID별로 평균 주문 수량을 계산하는 쿼리를 작성해주세요!
SELECT product_id,
avg(quantity) '평균 주문 수량'
FROM orders
group by 1
;
#판매되지 않은 상품의 ID와 이름을 찾는 쿼리를 작성해주세요!
SELECT p.id,
p.name
FROM products p
left join orders o on p.id = o.product_id
where o.id is null
;
'TIL' 카테고리의 다른 글
| [TIL] 241115 (5) | 2024.11.15 |
|---|---|
| [TIL] 241114 (4) | 2024.11.14 |
| [TIL] 241111 (1) | 2024.11.11 |
| [TIL] 241110 (1) | 2024.11.10 |
| [TIL] 241109 (1) | 2024.11.09 |