꿈은 데이터분석가, 취미는 계획

[MY SQL] 그룹별 비율의 평균 구하기 본문

SQL/sql문풀

[MY SQL] 그룹별 비율의 평균 구하기

data_2080 2024. 9. 26. 16:19
728x90

출처: [leetcode - SQL50] :  1211. Queries Quality and Percentage

문제:  쿼리평가와 순위간의 비율 평균, 안좋은 쿼리가 발생한 비율


1. CASE WHEN 활용하기

1) rating/position에 AVG를 사용하여 비율 평균 구하기

2) CASE구문으로 rating 3보다 작은 경우에는 1, 아닌경우 0을 부여한 후, AVG를 사용하여 평균 구하기
3) 계속 오류가 발생해서 확인해보니 query_name에 null이 있었다..!, where절에서 필터링하니 정답!

SELECT query_name
    ,ROUND(AVG(rating/position),2) AS quality 
    ,ROUND(AVG(CASE WHEN rating <3 THEN 1 ELSE 0 END)*100,2) AS poor_query_percentage 
FROM Queries 
WHERE query_name IS NOT NULL
GROUP BY query_name

2. IF문 활용하기

1) 1번에서 CASE구문 대신 IF문을 사용해서 풀 수 있다
    rating <3 작을 때는 첫번째 값인 1을 아닐 때는 0을 사용하는 방법이다. 

SELECT
  query_name,
  round(avg(rating/ position), 2) AS quality,
  round(avg(IF(rating < 3, 1, 0)) * 100, 2) AS poor_query_percentage
FROM Queries
WHERE query_name IS NOT NULL
GROUP BY query_name

 

728x90