SQL 문제풀이 복습
문제 링크
group_concat을 아냐 모르냐 묻는 문제.
아무 인자도 안 넣으면 자동으로 구분자(separator)에 콤마(,)가 들어간다.
SELECT sell_date,
Count(DISTINCT product) AS "num_sold",
Group_concat(DISTINCT product ORDER BY product ASC) AS "products"
FROM Activities
GROUP BY 1
ORDER BY 1;
문제 링크
1트(7/16)처럼 풀 필요가 전혀 없었는데;
생각해보니 저 때는 한창 CTE를 만드는 거에 꽂혀있어서 ('망치 든 사람' 모드)
그래야 할 필요가 없는 문제에도 CTE를 만들어서 푸는 게 버릇이 들어 있던 때였다.
간단한 문제는 간단하게 해결하자.
SELECT DISTINCT title
FROM Tvprogram t
JOIN Content c
ON t.content_id = c.content_id
WHERE Date_format(program_date, '%Y-%m') = '2020-06'
AND content_type = 'Movies'
AND kids_content = 'Y';
문제 링크
별로 어렵지 않게 풀 수 있는 문제인데
이 문제는 CTE를 만들어서 푸는 게 가독성 면에서 더 나은 선택인 거 같다.
7/16 1트 풀이를 참고할 것.
SELECT country
FROM (SELECT caller_id AS "call_id",
duration
FROM Calls c
UNION ALL
SELECT callee_id AS "call_id",
duration
FROM Calls c) a
JOIN (SELECT p.id,
c.name AS "country"
FROM Person p
JOIN Country c
ON LEFT(p.phone_number, 3) = c.country_code) b
ON a.call_id = b.id
GROUP BY country
HAVING Avg(duration) > (SELECT Avg(duration)
FROM Calls);