문제
💡 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
테이블 형태


풀이
SELECT NAME, COUNT(*) AS COUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT >= 2
ORDER BY NAME
해설
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
- 두 번 이상 쓰인 이름과 사용 횟수를 출력하는 문제다
- 이름이 NULL 인 값은 집계에서 제외해야 하므로 WHERE 절에서 IS NOT NULL 조건을 설정했다(중요)
SELECT NAME, COUNT(*) AS COUNT
# FROM ANIMAL_INS
# WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT >= 2
- 이름 별 사용 횟수를 집계해야 하므로 NAME 으로 GROUP BY 한 뒤 그룹별 COUNT 값이 2 이상인 경우만 필터링되도록 HAVING문에 그룹 조건을 설정했다
- SELECT문에서 COUNT는 COUNT(*)로 집계해주었는데, WHERE문에서 NULL이 제외되었기 때문에 *를 사용해 전체 행 개수를 세는 것으로 이름 별 사용 횟수를 셀 수 있다
[프로그래머스 / MySQL] 중복 제거하기
문제 💡 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다. 테이블 형태 풀이 SELECT COU
hei-ground.tistory.com
ORDER BY NAME
- 마지막으로 NAME 을 기준으로 오름차순 정렬해주었다
'SQL > 코딩테스트' 카테고리의 다른 글
[프로그래머스 / MySQL] 있었는데요 없었습니다 (0) | 2024.01.31 |
---|---|
[프로그래머스 / MySQL] 상품 별 오프라인 매출 구하기 (0) | 2024.01.31 |
[프로그래머스 / MySQL] 가장 비싼 상품 구하기 (0) | 2024.01.31 |
[프로그래머스 / MySQL] 최댓값 구하기 (0) | 2024.01.31 |
[leetcode / MySQL] 1045. Customers Who Bought All Products (0) | 2024.01.30 |