# [프로그래머스] 중복 제거하기

- Author: @mildsalmon
- Published: 2021-09-16
- Updated: 2021-09-16
- Source: http://blex.me/@mildsalmon/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%A4%91%EB%B3%B5-%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0
- Tags: 프로그래머스, 코딩테스트, 문제, 오라클, select, sql, distinct

---

# 1. 중복 제거하기

### A. 문제

위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.

### B. 내 답안

```sql

SELECT COUNT(DISTINCT(NAME))
FROM ANIMAL_INS
WHERE name IS NOT NULL;

```

```sql

SELECT COUNT(NAME)
FROM(
    SELECT NAME
    FROM ANIMAL_INS
    GROUP BY NAME
);

```

##### a. 회고

> 내 풀이

- group by를 사용하여 풀었다.
- 조금 찾아보고 몇번 해보니 `COUNT` 안에 `DISTINCT`가 가능하단걸 알게되었다.

> 반성

- 이 파트는 group by가 아닌데, 의도와는 다르게 푼거 같다.
- ~~NULL 집계와 관련하여, DISTINCT 키워드가 어떤 역할을 하는 것 같은데, 잘 모르겠다. 찾아봐야겠다.~~
	- 아무리 봐도 DISTINCT 키워드가 NULL과 관련된 어떤 일을 하는지 모르겠다. 그냥 `WHERE` 에 조건으로 추가하자.

### C. 문제 해설

> 이해한 내용을 바탕으로 작성했습니다.

단순하게, 중복을 제거하고 숫자를 세면 된다.

group by를 사용하는 경우, FROM에서 따로 group by를 한 결과를 가져와서 처리해야지 중복이 제거된 전체 name의 개수를 파악할 수 있다.

# 참고문헌

SELECT. [코딩테스트 연습 - 모든 레코드 조회하기 | 프로그래머스 (programmers.co.kr)](https://programmers.co.kr/learn/courses/30/lessons/59034). Programmers. (accessed Sep 14, 2021)
