SQL: 특정 컬럼에 필터링 된 조건이 필요할 때
2024. 10. 14. 02:21ㆍ전처리/SQL
01 첫 번째 문제
문제 URL: Queries Quality and Percentage
tip. 전체 결괏값을 나타내는 서브쿼리를 쓰면 안돼, IF문으로 query_name마다의 다른 결괏값을 출력할 수 있어야 한다.
SELECT
query_name,
ROUND((SUM(rating/position))/COUNT(query_name),2) AS quality,
ROUND((COUNT(IF(rating<3,1,NULL))/COUNT(*))*100,2) AS poor_query_percentage
FROM
Queries
GROUP BY
query_name;
-- ROUND(((SELECT COUNT(query_name) FROM Queries WHERE rating<3)/COUNT(query_name))*100,2)
다음과 같은 output처럼 Dog과 Cat 각각의 결괏값이 필요하면 IF문을 사용하라.
02 두 번째 문제
문제 URL: Monthly Transactions I
tip. 위에서 언급한 내용은 다음 연습 문제에서 확실하게 적용해볼 수 있었다.
SELECT
DATE_FORMAT(trans_date, '%Y-%m') as month,
country,
COUNT(*) AS trans_count,
COUNT(IF(state='approved',1,NULL)) AS approved_count,
SUM(amount) AS trans_total_amount,
SUM(IF(state='approved',amount,NULL)) AS approved_total_amount
FROM
Transactions
GROUP BY
month, country;
tip. 참고 코드: IF가 아닌 CASE WHEN을 활용한 조건식도 필터링이 간단하다.
SUM(CASE WHEN state = 'approved' THEN 1 ELSE 0 END) approved_count,
SUM(CASE WHEN state = 'approved' THEN amount ELSE 0 END) approved_total_amount
'전처리 > SQL' 카테고리의 다른 글
SQL: COALESCE 사용예시, NULLIF과 IFNULL의 차이점 (0) | 2024.09.30 |
---|---|
SQL: COUNT()와 SUM()의 작동 방식을 이해한다. (0) | 2024.09.22 |
SQL: DATEDIFF, SUBDATE 활용 방법의 차이 (feat. join문제) (1) | 2024.09.12 |
SQL: SELF JOIN 활용하는 문제 풀이 (output보며 이해) (0) | 2024.09.12 |
SQL: CROSS JOIN과 LEFT JOIN 동시에 활용하기 (0) | 2024.09.05 |