(92번) average-selling-price
SELECT
p.product_id,
ROUND(SUM(p.price * uni.units)/SUM(uni.units),2) as average_price
-- 4) avg_price 계산
FROM
prices p
JOIN unitsSold uni
ON p.product_id = uni.product_id --1) product_id에 맞춰서 조인하는데
AND uni.purchase_date between p.start_date and end_date
-- 2) purchase_date가 start와 end 사이에 해당하게
GROUP BY
p.product_id -- 3) product_id로 그룹화해서
(93번) project-employees-i
SELECT
pro.project_id,
avg(emp.experience_years) AS average_years -- 3) project별 employee들의 평균 avg
FROM
Project AS pro
JOIN Employee AS emp
ON pro.employee_id = emp.employee_id -- 1) project_id에 맞춰서 조인
group by pro.project_id -- 2) project_id 그룹화
(94번) percentage-of-users-attended-a-contest
> 당연히 join문을 써서 푸는 문제로만 생각했는데, join을 쓰지 않고 푸는 것을 보고 아차 싶었다. 내가 푼 답에도 굳이 JOIN을 안 써도 됐었다.
> 현업에서 대량의 데이터를 다룰 때는 join을 쓰지 않는다고 한다.
SELECT
reg.contest_id,
ROUND(COUNT(reg.user_id)/ (SELECT COUNT(user_id)
FROM users) * 100,2) AS percentage
-- 3) 연산하기
FROM
Users us
JOIN Register reg
ON us.user_id = reg.user_id -- 1) name을 붙야주고
GROUP BY
reg.contest_id -- 2) contset 그룹화해서
ORDER BY
percentage desc, reg.contest_id asc
SELECT
contest_id,
ROUND(COUNT(user_id) * 100 /(SELECT COUNT(user_id)
FROM Users) ,2) as percentage
FROM
Register
GROUP BY
contest_id
ORDER BY
percentage desc, contest_id ASC
'[스파르타코딩클럽]데이터분석 과정 > SQL' 카테고리의 다른 글
[SQL] CTE와 VIEW _ 가독성과 번거로움을 덜기 위한 방법 (0) | 2024.01.05 |
---|---|
[SQL 코드카타] 150 ~ 157번 (HackerRank) (0) | 2024.01.05 |
[SQL 코드카다] 89~92번 (LeetCode) (0) | 2024.01.03 |
[SQL 코드카타] 86 ~ 88번 (LeetCode) (1) | 2024.01.02 |
[SQL][개인과제] ECOMMERCE 데이터 분석(2)_중급~상급 문제 (1) | 2024.01.02 |