문제 풀이기록/SQL
[HakerRank] Weather Observation Station 4 오답
개발하는 몽키
2025. 3. 21. 14:18
https://www.hackerrank.com/challenges/weather-observation-station-4/problem?isFullScreen=true
Weather Observation Station 4 | HackerRank
Find the number of duplicate CITY names in STATION.
www.hackerrank.com
문제설명 :
STATION 테이블에서 중복된 CITY 이름의 개수를 구하는 문제입니다. 정확히 설명하자면 전체 CITY 개수와 고유한 CITY 개수를 각각 계산하고 그 차이를 구하는 문제입니다.
내가 작성한 코드 (틀린 코드) :
SELECT COUNT(CITY), COUNT(DISTINCT CITY) AS DISTINCT_CITY, DIFFERENCE
FROM STATION
WHERE COUNT(CITY) - COUNT(DISTINCT) = DIFFERENCE;
틀린 이유 :
- COUNT() 함수를 WHERE 절에 사용하였습니다.
- WHERE 절에서 STATION 테이블에 없는 DIFFERENCE를 사용하였습니다.(재창조 하였다고 보면 됨.. 무에서 유 ^.^)
- COUNT() 함수로 개수를 구해서 중복된 값을 빼는건 알았는데 각 절들의 구조를 이해하지 못한채로 우겨넣었습니다.
정답코드 :
SELECT COUNT(CITY) - COUNT(DISTINCT CITY) AS DIFFERENCE
FROM STATION;
배운점 :
- COUNT() 함수는 집계함수 이기 때문에 WHERE 절에 사용할 수 없다.
- 집계함수는 그룹화 된 데이터나 전체 데이터에 대해서만 작업하므로 WHERE절이 아닌 HAVING 절에서 조건을 걸어야한다.
- WHERE 절에 적을 수 있는 것은 FROM 절에서 지정한 테이블의 칼럼이 사용가능하다.
- 별칭은 SELECT 절에서만 정의되며, 그 값을 기준으로 필터링 할땐 WHERE 절을 사용해야 한다.