프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설계
처음에는 group by NAME을 이용해서 풀려고 시도했다. 근데 그렇게 하니까 총합을 구할 수가 없었다..
DISTINCT 도 생각했었으나 처음에 DISTINCT COUNT(NAME)으로 하니, 중복이 제거되지 않았다.
문제 풀이
-- 코드를 입력하세요
SELECT COUNT(DISTINCT NAME) AS count
FROM ANIMAL_INS
WHERE NAME IS NOT NULL;
정리
SELECT SUM(COUNT(name)) FROM table;
-- ❌ 오류 발생
위에 거 하려면 아래처럼
SELECT SUM(cnt)
FROM (
SELECT COUNT(name) AS cnt
FROM table
GROUP BY something
) AS sub;
중복 제거
❗주의할 점
- DISTINCT는 SELECT 뒤에 바로 와야 하고,
- 여러 칼럼에 쓰면 그 칼럼들의 조합이 중복되는지 확인해서 제거해.
- 집계 함수랑 같이 쓸 땐 COUNT(DISTINCT column)처럼 사용 가능
- SELECT DISTINCT column1, column2,...
FROM table_name; 하면 column1, column2... 의 조합이 중복되지 않는 행들만 가져온다.
'코딩테스트 > SQL' 카테고리의 다른 글
[프로그래머스 LV3][SQL] 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (0) | 2025.04.03 |
---|---|
[프로그래머스 LV3][SQL] 대장균의 크기에 따라 분류하기 2 (0) | 2025.04.02 |
[프로그래머스 LV2][SQL] 가격대 별 상품 개수 구하기 (0) | 2025.03.28 |
[프로그래머스 LV2][SQL] 업그레이드 된 아이템 구하기 (0) | 2025.03.28 |
[프로그래머스 LV2][SQL] 조건에 맞는 개발자 찾기 (0) | 2025.03.27 |