문제
- Number of Unique Subjects Taught by Each Teacher
- Sorting and Grouping
작성 답안
초기 답안
SELECT teacher_id
, count(*) as cnt
FROM
(
SELECT teacher_id
, subject_id
FROM Teacher
GROUP BY teacher_id, subject_id
)
GROUP BY teacher_id
최종 답안
SELECT teacher_id
, count( distinct subject_id ) as cnt
FROM Teacher
GROUP BY teacher_id
핵심 풀이 Point
이 문제를 풀기위해서는 그룹 함수 사용 할 때 DISTINCT 를 사용할 수 있다는 것을 알아야 했다.
물론 이 방법 말고도 서브쿼리와 GROUP BY 를 두 번 사용하면 해결할 수 있지만 이렇게 했을 때, runtime 속도가 훨씬 더 걸렸다.
내 생각엔 GROUP BY와 DISTINCT 시 사용되는 알고리즘이 영향을 미친게 아닐까 싶다.
'코딩테스트' 카테고리의 다른 글
[백준] 실버1/파이썬 - 1446 지름길 (0) | 2024.08.19 |
---|---|
[백준] 실버1/파이썬 - 11726 트리의 부모 찾기 (0) | 2024.08.12 |
[Programmers] 코딩테스트 입문 - 잘라서 배열로 저장하기 (0) | 2023.11.16 |
[Programmers] 코딩테스트 입문 - 양꼬치 (0) | 2023.11.15 |
[Programmers] 코딩테스트 입문 - 문자열 계산하기 (1) | 2023.11.14 |