본문 바로가기

WIL

12/08 WIL

SQL

번주는 넘 재밌다보니 거의 SQL카타 위주로 공부해버린 것 같다...ㅎ

일단은 이번주에 자주 등장한 having 함수와 where 함수 두 가지에 대한 정리(오전에 급하게 알바하고 왔더니 너무 피곤해서 주말에 내용 추가 예정..ㅠ)

 

 

1. Having 함수

having 함수핵심

-위치/순서 : where-group-having-order

-컴퓨터의 번역 순서 : FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY

-where에는 집계함수(sum 등)을 사용하지 못한다. 

-having은 집계함수로 조건을 걸어주는 역할을 하기에, 반드시 집계함수와 group by가 선행되어야 한다

 =>having은 집계함수를, where는 단일 데이터를 조건으로 건다는 차이점이 핵심!

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

 

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

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

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

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

 

 

 

 where 'column_name' in ()

where에 서브쿼리를 넣는 방식은 크게 어렵진 않고, 단지 여러 문제를 보면서 복습하는게 답인 것 같다.

48. 즐겨찾기가 가장 많은 식당 정보 출력하기

SELECT food_type,
	   rest_id,
       rest_name,
       favorites
from rest_info where favorites in (select max(favorites) from rest_info group by food_type)
group by food_type
order by food_type desc

 

 

 

51. 없어진 기록 찾기 : where column_name not in ()

where 절에 서브쿼리를 활용해주는 방식. 텍스트에서 드러나는 대로 animal_ins에는 없지만 animal_outs에는 있는 animal_id를 찾으라는 방식으로 함수를 입력하기만 하면 된다. 오히려 위의 방식보다 쉬운 방식인 셈.

SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS
WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_INS)
ORDER BY ANIMAL_ID;

'WIL' 카테고리의 다른 글

1/12 WIL  (1) 2024.01.12
01/05  (0) 2024.01.05
12월 마지막주(12/29) WIL  (0) 2023.12.29
12/22 WIL  (0) 2023.12.22
11/27~12/01 WIL  (6) 2023.12.01