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

SQL 코드카타 21 ~ 30

by worldcenter 2024. 8. 4.

 

21. 이름이 없는 동물의 아이디

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL;

 

22. 조건에 맞는 회원 수 구하기

SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE YEAR(JOINED) = 2021 AND 
AGE BETWEEN 20 AND 29;

 

날짜 관련 함수 모음

괄호 안에 들어가는 컬럼의 형식은 'DATE', 'DATETIME', 'TIMESTAMP' 여야 합니다.

# YEAR 
SELECT YEAR('2024-08-05') -> 2024
# MONTH(리턴 값은 1에서 12 사이)
SELECT MONTH('2024-08-05') -> 8

 

23. 중성화 여부 파악하기

SELECT ANIMAL_ID, NAME,
IF(SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%', 'O', 'X') "중성화"
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

24. 카테고리 별 상품 개수 구하기

SELECT SUBSTRING(product_code, 1, 2) AS CATEGORY,
COUNT(product_id) AS PRODUCTS
FROM PRODUCT
GROUP BY 1
ORDER BY 1;

 

25. 고양이와 개는 몇 마리 있을까

SELECT ANIMAL_TYPE, COUNT(*) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY 1;

 

26. 입양 시각 구하기(1)

SELECT DATE_FORMAT(DATETIME, '%H') AS HOUR,
COUNT(*) AS count
FROM ANIMAL_OUTS
WHERE DATE_FORMAT(DATETIME, '%H') BETWEEN 09 AND 19
GROUP BY 1
ORDER BY 1;

 

DATE_FORMAT, TIME_FORMAT

1) DATE_FORMAT(date, format) : format의 정의에 따라 날짜 혹은 시간을 출력

2) TIME_FORMAT(time, format) : DATE_FORMAT과 비슷하지만 시, 분, 초만을 나타냄

'%Y' : 4자리 연도 (예: 2024)
'%y' : 2자리 연도 (예: 24)
'%m' : 2자리 월 (01 ~ 12)
'%d' : 2자리 일 (01~31)
'%H' : 24시간 형식의 시간 (00~23)
'%h' : 12시간 형식의 시간 (01~12)
'%i' : 분 (00 ~ 59)
'%s' : 초 (00 ~ 59)
'%p' : AM 또는 PM
'%a' : 요일의 약어 (예: Sun, Mon)
'%W' : 요일의 전체 이름 (예: Sunday, Monday)
'%M' : 월의 전체 이름 (예: January, February)
'%b' : 월의 약어 (예: Jan, Feb)
'%r' : 12시간 형식의 시간, 분, 초와 AM/PM (예: 02:30:15 PM)
'%T' : 24시간 형식의 시간, 분, 초 (예: 14:30:15)

 

27. 진료과별 총 예약 횟수 출력하기

SELECT MCDP_CD "진료과 코드", COUNT(*) "5월 예약건수"
FROM APPOINTMENT
WHERE DATE_FORMAT(APNT_YMD, '%Y-%m') = '2022-05'
GROUP BY 1
ORDER BY 2, 1;

 

28. 12세 이하인 여자 환자 목록 출력하기

SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO, 'NONE')
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME;

 

29. 인기있는 아이스크림

SELECT FLAVOR
FROM FIRST_HALF
ORDER BY TOTAL_ORDER DESC, SHIPMENT_ID;

 

30. 자동차 종류 별 특정 옵션이 포함된 자동차

SELECT car_type, COUNT(*) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE options LIKE '%통풍시트%' OR options LIKE '%열선시트%' OR options LIKE '%가죽시트%'
GROUP BY 1
ORDER BY 1;

-- 또는

SELECT car_type, COUNT(*) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE options REGEXP '통풍시트|열선시트|가죽시트'
GROUP BY 1
ORDER BY 1;

 

정규식을 이용한 검색 REGEXP

LIKE 검색과는 달리 정규식을 이용한 검색방법을 말합니다.

REGEXP는 우리에게 LIKE보다 좀 더 다양한 검색을 할 수 있도록 도움을 줍니다.

 

1) Matching

기호 기능 예시 설명
. 문자 하나 '....' 문자열 4글자 인 것을 찾기
| OR '하나|둘' '하나' or '둘'에 해당하는 문자열 찾기
[] []안에 나열된 패턴 문자열 찾기 '[123]셋' '1셋' or '2셋' or '3셋'
^ 시작하는 문자열 찾기 '^넷' '넷'으로 시작되는 문자열 찾기
$ 끝나는 문자열 찾기 '넷$' '넷'으로 끝나는 문자열 찾기

 

2) Numbers Limit

기호 기능 예시 설명
* 0회 이상 나타나는 문자 'a*' 'a'가 0번 이상 등장하는 문자열 'a', 'aa', 'b'
+ 1회 이상 나타나는 문자 '장+' '장'이 1번 이상 등장하는 문자열
문자{m, n} m회 이상, n회 이하 반복되는 문자 '장{1, 2}' '장' 1회 이상, 2회 이하 문자열
? 0~1회 나타나는 문자 '장?' '장'이 0~1회

 

3) String Group

기호 기능 예시 설명
[A-z] 영어 문자열 찾음 '^[A-z]' 영어로 시작하는 문자열 찾음
[0-9] 숫자 문자열 찾음 '[0-9]+' 한 개 이상의 숫자가 등장하는 문자열 찾음

 

4) Not

기호 기능 예시 설명
[^문자] [] 안의 문자를 포함하지 않는 문자열 찾음 '[^장]' '장'을 포함하지 않는 문자열 찾음
'간장', '장', '간장공장' 은 모두 제외

 

출처: https://hansuho113.tistory.com/59

'코딩테스트 > SQL코드카타' 카테고리의 다른 글

SQL 코드카타 51 ~ 60  (0) 2024.08.05
SQL 코드카타 41 ~ 50  (0) 2024.08.05
SQL 코드카타 31 ~ 40  (0) 2024.08.04
SQL 코드카타 11 ~ 20  (0) 2024.08.04
SQL 코드카타 1~10  (0) 2024.08.03