문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
Table: Queries
| Column Name | Type |
|---|---|
| query_name | varchar |
| result | varchar |
| position | int |
| pating | int |
테이블은 중복된 행을 가질 수 있다.
테이블은 데이터베이스에서 어떤 쿼리로부터 모아온 정보를 포함한다.
position 컬럼은 1부터 500까지 값을 가진다.
rating 컬럼은 1부터 5까지 값을 가진다. rating이 3보다 낮은 쿼리는 안 좋은 쿼리이다.
쿼리 quality는 다음과 같이 정의한다.
poor query percentage는 다음과 같이 정의한다.
각 query_name, query, poor_query_percentage를 찾는 솔루션을 작성해라.
Input:
Queries table:
| query_name | result | position | rating |
|---|---|---|---|
| Dog | Golden Retriver | 1 | 5 |
| Dog | German Shepherd | 2 | 5 |
| Dog | Mule | 200 | 1 |
| Cat | Shirazi | 5 | 2 |
| Cat | Siamese | 3 | 3 |
| Cat | Sphynx | 7 | 4 |
Output:
| query_name | quality | poor_query_percentage |
|---|---|---|
| Dog | 2.50 | 33.33 |
| Cat | 0.66 | 33.33 |
-- Write your PostgreSQL query statement below
select
query_name,
round(avg(rating::numeric / position), 2) as quality,
round(sum(case when rating < 3 then 1 else 0 end)::numeric * 100 / count(*), 2) as poor_query_percentage
from Queries
group by query_name