문제 출저
https://leetcode.com/problems/queries-quality-and-percentage/?envType=study-plan-v2&envId=top-sql-50
문제 풀이
Queries 테이블로 query_name, result, position, rating이 주어집니다. 이 열들을 조합하고 계산하여 quality와 poor_query_percetage를 구합니다. 각각의 식은 다음과 같습니다.
quality : rating과 position의 비율 (rating / position)
poor_query_percentage : rating이 3 미만인 쿼리의 전체 쿼리 비율
이것은 query_name별로 구하면 됩니다.
수식을 계산하기 위해 avg, sum, if, count의 함수를 사용합니다.
SQL
# 쿼리 품질 : 쿼리 평점과 해당 position 간의 비율 평균 = rating/position
# 불량 쿼리 비율 : 등급이 3미만인 모든 쿼리 비율 = rating < 3 / count(*)
select
query_name,
round(avg(rating/position), 2)
as quality,
round(sum(if(rating < 3, 1, 0)) / count(*) * 100, 2)
as poor_query_percentage
from
Queries
where
query_name is not null
group by
query_name
-- select
-- query_name,
-- round(sum(rating/position) / count(*), 2)
-- as quality,
-- round(sum(case when rating < 3 then 1 else 0 end)
-- / count(*) * 100, 2)
-- as poor_query_percentage
-- from
-- Queries
-- where
-- query_name is not null
-- group by
-- query_name