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_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_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 |