1. 중복 제거하기
A. 문제
위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.
B. 내 답안
SELECT COUNT(DISTINCT(NAME))
FROM ANIMAL_INS
WHERE name IS NOT NULL;
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. 문제 해설
이해한 내용을 바탕으로 작성했습니다.
SELECT COUNT(DISTINCT(NAME))
FROM ANIMAL_INS
WHERE name IS NOT NULL;
SELECT COUNT(NAME)
FROM(
SELECT NAME
FROM ANIMAL_INS
GROUP BY NAME
);
내 풀이
- group by를 사용하여 풀었다.
- 조금 찾아보고 몇번 해보니
COUNT
안에DISTINCT
가 가능하단걸 알게되었다.
반성
- 이 파트는 group by가 아닌데, 의도와는 다르게 푼거 같다.
NULL 집계와 관련하여, DISTINCT 키워드가 어떤 역할을 하는 것 같은데, 잘 모르겠다. 찾아봐야겠다.- 아무리 봐도 DISTINCT 키워드가 NULL과 관련된 어떤 일을 하는지 모르겠다. 그냥
WHERE
에 조건으로 추가하자.
- 아무리 봐도 DISTINCT 키워드가 NULL과 관련된 어떤 일을 하는지 모르겠다. 그냥
C. 문제 해설
이해한 내용을 바탕으로 작성했습니다.
이해한 내용을 바탕으로 작성했습니다.
단순하게, 중복을 제거하고 숫자를 세면 된다.
group by를 사용하는 경우, FROM에서 따로 group by를 한 결과를 가져와서 처리해야지 중복이 제거된 전체 name의 개수를 파악할 수 있다.
참고문헌
SELECT. 코딩테스트 연습 - 모든 레코드 조회하기 | 프로그래머스 (programmers.co.kr). Programmers. (accessed Sep 14, 2021)
Ghost