🚩오늘의 문제는?
SQL - level 2
1.최솟값 구하기
2.동명 동물 수 찾기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT DATETIME AS 시간
FROM ANIMAL_INS
ORDER BY DATETIME ASC LIMIT 1;
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(NAME) > 1
ORDER BY NAME ASC;
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) > 1
ORDER BY NAME ASC;
참고로 GROUPBY에서도 NULL값이 자동으로 삭제 되기 때문에, 따로
WHERE 구문을 적지 않아도된다.
GROUP BY HAVING
: 특정 컬럼을 기준으로 그룹화 하여 테이블에 존재하는 행들을 그룹별로 구분
: 여러개의 레코드를 하나의 그룹으로 묶어서 계산을 수행
: 그룹화된 데이터에 조건을 주어 데이터를 추출
: HAVING 절은 GROUP BY와 같이 사용하고, 조건을 지정하는데 사용
SELECT NATIONALITY, GENDER , SUM(INCOME) AS TOTAL_INCOME
FROM TABLE1
GROUP BY NATIONALITY, GENDER
HAVING TOTAL_INCOME >=30;
: 중복된 값을 제거하고 유일한 값을 반환
: SELECT문에서 사용한다.
: 정렬하지 않아서 더 빠르다.