본문 바로가기

TIL 통합

12/07 일지 having(보충)

sql 카타

6번 문제 : 동명 동물 수 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

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

 

지난번에 공부했던 having을 활용하는 문제. 아직 방식이 익숙하지 않으니 별의별 타이핑을 시도해봤으나 역시나 안 됐고, 질문하기를 통해 이래저래 찾아보고 공부해서 다음과 같은 답을 입력했다.

SELECT name,
       count(*)
FROM ANIMAL_INS
where name is not null
group by name
having count(name) >=2
order by name

 

지난번에 놓쳤던 having의 몇가지 특징을 추려보면

 

having 함수

-집계함수(count, sum, avg 등)과 함께 사용

-group by와 함께 사용. group by에 의해 그룹화된 데이터를 필터링하는 역할을 함

 

이런 식인데, 중요한 포인트는 group by와 함께 사용하면서, group by에 의해 그룹화된 데이터에다가 조건을 걸어주는 역할을 한다는 것. 즉, where는 한 row에 대해서만 조건을 걸어주는 것이라면 having은 묶여진 덩어리에다가 조건을 걸어주는 역할을 하는 역할을 해준다. 위에서는 name으로 그룹화를 해주었으니, name에 대한 카운트를 한 값이 2개 이상인 것을 찾아내는 것인 셈.

 


tmi

 

어제 그제 급하게 해야할 일이 있다보니 너무 피곤해서 공부에 거의 집중하질 못한듯..

그래도 처음으로 팀원들과 조금이나마 대화를 나눴고, 아직 공부할 내용은 많지만 꾸역꾸역 sqld 강의를 듣고 있다.

덧붙여서 파이썬 카타 업로드가 됐는데 왜케 어렵...