문제 파악

- 출력할 컬럼 : 동물 이름의 갯수 ⇒ SELECT
- 데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM
- 문제 조건 : 중복 누적 x, null값도 집계 x ⇒ ???
문제 해결 과정
💡 Distinct
✅ 중복되는 데이터가 있다면, 하나만 count (중복 제거해라!)
SELECT DISTINCT 컬럼 FROM 테이블;

⚡ 주의사항
⇒ MySQL에서는 DISTINCT 할 때 ( )의 의미가 없다. 한 개의 컬럼에만 적용하고 싶다면, GROUP BY를 사용
########### DISTINCT ###############
## 이렇게 하면 의도하지 않은 결과가 출력될 것.
SELECT DISTINCT (U.USERID), U.NAME, U.ADDR, B.PRODNAME
FROM BUYTBL B INNER JOIN USERTBL U
ON B.USERID = U.USERID;
# U.USERID의 유니크 값을 기준으로 정렬하고 싶다면, GROUP BY 사용하기!!!
SELECT U.USERID, U.NAME, U.ADDR, B.PRODNAME
FROM BUYTBL B INNER JOIN USERTBL U
ON B.USERID = U.USERID
GROUP BY U.USERID;


💡 Count
✅ 갯수를 세어주는 집계함수
→ 아래 게시글 참고!
동명 동물 수 찾기 [group by, having]
문제 파악 출력할 컬럼 : 동물의 이름, 이름이 쓰인 횟수 ⇒ SELECT 데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM 조회 순서 : 이름 순 ⇒ ORDER BY 집계할 내용 : 이름이 없는 동물을 제외하고, 이름이 쓰
seheehee.tistory.com
🌟 (ISSUE) where로 Null 조건을 걸지 않았는데 정답처리?!
→ 제 생각엔 데이터에 null 값이 없었던 것 같아요!
- null은 distinct로 제거가 될까? ⇒ NO!!!!!! Null도 하나의 unique값으로 간주되어 where절로 조건을 걸지 않으면 count에 포함된다.


문제 해결

> 완성 코드
## 답안 확인
# name의 unique값을 세어 count 변수로 출력
SELECT count(distinct(name)) as count
from animal_INS;
'SQL > MySQL - 프로그래머스' 카테고리의 다른 글
[Lv.2] 가격대 별 상품 개수 구하기 [case when, between] (0) | 2024.05.06 |
---|---|
[Lv.2] 재구매가 일어난 회원 리스트 [group by, having, count] (0) | 2024.05.06 |
[Lv.2] NULL 처리하기 [ifnull, coalesce] (0) | 2024.05.06 |
[Lv.2] 동명 동물 수 찾기 [group by, having] (0) | 2024.04.09 |
[Lv.2] 이름에 el이 들어가는 동물 찾기 [where] (0) | 2024.04.09 |