본문 바로가기
코딩테스트/SQL코드카타

SQL 코드카타 1~10

by worldcenter 2024. 8. 3.

 

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