1. 이름이 있는 동물의 ID
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL;
NULL 값이란 알 수 없는 값(Unknown)을 의미하며, Null이 발생하는 경우는 다음과 같습니다.
1) Null 값이 허용된 컬럼에 값이 없을 경우
2) Null값과 산술연산을 할 경우 (1 + Null = Null)
3) Left, Right Join 시 매칭 값이 없을 경우
4) 서브 쿼리의 값이 없을 경우
IS NULL
해당 값이 Null인 값만 가져오기
IS NOT NULL
해당 값이 Null이 아닌 값만 가져오기
2. 역순 정렬하기
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;
3. 중복 제거하기
SELECT COUNT(DISTINCT NAME) "COUNT"
FROM ANIMAL_INS
WHERE NAME IS NOT NULL;
DISTINCT 란 중복 데이터가 있을 시 하나만 카운트 하도록 하는 명령어로, 중요한 것은 함수가 아니다.
'GROUP BY'와 비슷해보이지만 'GROUP BY'는 집계가 가능하다는 차이점이 존재한다.
DISTINCT 사용 시 유의할 점은 DISTINCT는 함수가 아니기에 뒤에 컬럼이 여러 개 오는 경우, 해당 컬럼 모두에게 중복 제거 조건이 적용된다.
만약 특정 컬럼만 중복을 제거하고 싶다면 서브쿼리, GROUP BY 등을 사용해야 한다.
4. 동물의 ID와 이름
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
5. 동물 수 구하기
SELECT COUNT(ANIMAL_ID) "COUNT"
FROM ANIMAL_INS;
6. 동명 동물 수 찾기
SELECT NAME, COUNT(NAME) "NAME_COUNT"
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME;
SELECT를 통해 조회를 할 때 유의해야 할 점은 수행 순서이다.
위 쿼리문의 수행 순서는 다음과 같습니다.
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
SELECT 절에서 조건을 주려면 WHERE를 사용하고, GROUP BY 절에서 조건을 주려면 HAVING 절을 사용해야 합니다.
7. 아픈 동물 찾기
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION='Sick'
ORDER BY ANIMAL_ID;
8. 상위 n개 레코드
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME LIMIT 1;
LIMIT은 결과에서 몇 개의 행을 반환할 것인지 제한하는 구문이며, 2가지 방법으로 LIMIT을 활용할 수 있다.
주로 WHERE 절이나 ORDER BY 절 뒤에 사용한다.
1) LIMIT
맨 위에 있는 행 한 개만 출력
SELECT 컬럼명
FROM 테이블명
LIMIT 개수;
-- 예제
SELECT *
FROM BOOK
LIMIT 1;
2) LIMIT OFFSET
LIMIT 뒤에는 출력 개수가 들어가고, OFFSET 뒤에는 시작 인데스가 들어간다
OFFSET은 0부터 시작되며, 아래 예제를 해석하면 0,1,2,3 네 번째 행에 해당하는 값이 반환된다.
SELECT 컬럼명
FROM 테이블명
LIMIT 개수 OFFSET 시작인덱스;
-- 예제
SELECT *
FROM BOOK
LIMIT 1 OFFSET 3;
3) OFFSET 생략
OFFSET을 생략할 경우 의미가 달라진다.
아래 예제를 해석하면 1번 인덱스부터 3개의 행을 반환
SELECT 컬럼명
FROM 테이블명
LIMIT 시작인덱스, 개수;
-- 예제
SELECT *
FROM BOOK
LIMIT 1, 3;
9. 최솟값 구하기
SELECT DATETIME "시간"
FROM ANIMAL_INS
ORDER BY DATETIME LIMIT 1;
10. 어린 동물 찾기
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
ORDER BY ANIMAL_ID;
'코딩테스트 > SQL코드카타' 카테고리의 다른 글
SQL 코드카타 51 ~ 60 (0) | 2024.08.05 |
---|---|
SQL 코드카타 41 ~ 50 (0) | 2024.08.05 |
SQL 코드카타 31 ~ 40 (0) | 2024.08.04 |
SQL 코드카타 21 ~ 30 (0) | 2024.08.04 |
SQL 코드카타 11 ~ 20 (0) | 2024.08.04 |