[SQL 문제 풀이] Queries Quality and Percentage (질의 품질 및 비율)

Stupefyee's avatar
Jun 12, 2025
[SQL 문제 풀이] Queries Quality and Percentage (질의 품질 및 비율)
Queries Quality and Percentage - LeetCode
Can you solve this real interview question? Queries Quality and Percentage - Table: Queries +-------------+---------+ | Column Name | Type | +-------------+---------+ | query_name | varchar | | result | varchar | | position | int | | rating | int | +-------------+---------+ This table may have duplicate rows. This table contains information collected from some queries on a database. The position column has a value from 1 to 500. The rating column has a value from 1 to 5. Query with rating less than 3 is a poor query.   We define query quality as: > The average of the ratio between query rating and its position. We also define poor query percentage as: > The percentage of all queries with rating less than 3. Write a solution to find each query_name, the quality and poor_query_percentage. Both quality and poor_query_percentage should be rounded to 2 decimal places. Return the result table in any order. The result format is in the following example.   Example 1: Input: Queries table: +------------+-------------------+----------+--------+ | query_name | result | position | rating | +------------+-------------------+----------+--------+ | Dog | Golden Retriever | 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 | +------------+---------+-----------------------+ Explanation: Dog queries quality is ((5 / 1) + (5 / 2) + (1 / 200)) / 3 = 2.50 Dog queries poor_ query_percentage is (1 / 3) * 100 = 33.33 Cat queries quality equals ((2 / 5) + (3 / 3) + (4 / 7)) / 3 = 0.66 Cat queries poor_ query_percentage is (1 / 3) * 100 = 33.33
Queries Quality and Percentage - LeetCode
notion image
쿼리 품질을 다음과 같이 정의합니다: 쿼리 등급과 해당 위치 간의 비율 평균. 또한 쿼리 비율이 낮은 것을 다음과 같이 정의합니다: 등급이 3 미만인 모든 쿼리의 비율입니다. 각 query_name, 즉 품질과 낮은 query_percentity를 찾기 위한 솔루션을 작성하세요. 품질과 불량_query_percentity 모두 소수점 이하 두 자리로 반올림해야 합니다. 결과 테이블을 순서에 상관없이 반환하세요.
 

내가 작성한 쿼리

MySQL, Oracle

SELECT query_name, ROUND(AVG(rating * 1.0 / position), 2) AS quality, -- * 1.0을 곱해 정수 나눗셈 방지 -- poor query 개수 세기 >> 3 THEN 1 ELSE 0 END ROUND(SUM(CASE WHEN rating < 3 THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) AS poor_query_percentage FROM Queries GROUP BY query_name;
Share article

stupefyee