사전캠프

TIL 17

musukie 2024. 9. 20. 14:39

  SQL 문제(코드카타)

더보기

- 역순 정렬하기

SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC

- 중복 제거하기

SELECT COUNT(DISTINCT NAME)
FROM ANIMAL_INS

- 동물의 아이디와 이름

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

- 동물 수 구하기

SELECT COUNT(ANIMAL_TYPE)
FROM ANIMAL_INS

- 동명 동물 수 찾기

SELECT NAME, COUNT(NAME)
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) >= 2
AND NAME<>'NULL'
ORDER BY NAME

- 아픈 동물 찾기

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION='Sick'
ORDER BY ANIMAL_ID

- 상위 n개 레코드

SELECT NAME
FROM ANIMAL_INS
WHERE DATETIME = (SELECT MIN(DATETIME) FROM ANIMAL_INS)

- 최솟값 구하기

SELECT MIN(DATETIME)
FROM ANIMAL_INS

- 어린 동물 찾기

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION<>'Aged'
ORDER BY ANIMAL_ID

- 여러 기준으로 정렬하기

SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC

- 이름에 el이 들어가는 동물 찾기

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%EL%' AND ANIMAL_TYPE='Dog'
ORDER BY NAME

- 나이 정보가 없는 회원 수 구하기

SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE AGE IS NULL

- 가장 비싼 상품 구하기

SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT

- NULL 처리하기

SELECT ANIMAL_TYPE, IF(NAME IS NULL, 'No name', NAME) NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

- 경기도에 위치한 식품창고 목록 출력하기

SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IF(FREEZER_YN IS NULL, 'N', FREEZER_YN) FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID

- 강원도에 위치한 생산공장 목록 출력하기

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
ORDER BY FACTORY_ID

- DATETIME에서 DATE로 형 변환

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') "날짜"
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

- 흉부외과 또는 일반외과 의사 목록 출력하기

SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD="CS" OR MCDP_CD="GS"
ORDER BY HIRE_YMD DESC, DR_NAME

- 가격이 제일 비싼 식품의 정보 출력하기

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY,PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)

- 이름이 없는 동물의 아이디

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID

- 조건에 맞는 회원수 구하기

SELECT COUNT(*)
FROM USER_INFO
WHERE JOINED LIKE '2021%' AND AGE BETWEEN 20 AND 29

- 중성화 여부 파악하기

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

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

SELECT SUBSTRING(PRODUCT_CODE, 1, 2) CATEGORY,
    COUNT(SUBSTRING(PRODUCT_CODE, 1, 2)) PRODUCTS
FROM PRODUCT
GROUP BY CATEGORY
ORDER BY CATEGORY

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

SELECT ANIMAL_TYPE, COUNT(*) COUNT
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE

- 입양 시각 구하기(1)

SELECT DATE_FORMAT(DATETIME, '%H') HOUR,
       COUNT(1) COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 9 AND 19
GROUP BY HOUR
ORDER BY HOUR

 

  SQL 걷기반 - 이제 좀 벌었으니 flex 한 번 해볼까요?!

더보기

5.

SELECT product_name, price

FROM products

6.

SELECT *

FROM products

WHERE product_name like '%프로%'

7.

SELECT *

FROM products

WHERE product_name like '갤%'

8.

SELECT SUM(price)

FROM products

*

더보기

오늘은 SQL 코드카타와 과제를 진행했다. 걷기반 과제는 지금까지 들은 강의만으로도 해결할 수 있었다. 그러나 코드카타는 진행하다 보니 모르는 코드를 사용해야 하는 경우가 많았다. 다른 사람들의 문제 풀이를 보면서 어떤 코드가 어떻게 작동하는 지 대충 이해했다. 아직 내가 모르는 코드들이 많다는 것을 느꼈고, 다음 주에는 SQL 강의를 마무리 짓고 코드카타를 다시 진행해야 겠다. 같은 문제지만 여러 해결 방법이 있는 것도 신기했다. 처음 보는 어려운 코드를 잔뜩 써서 해결할 수도 있지만, 내가 알고 있는 간단한 코드 몇 개만으로 해결할 수도 있었다. 아는 것이 많아질 수록 다양한 시도를 할 수 있을 것 같아서, 나도 얼른 여러 코드를 배워서 같은 문제를 다양한 방식으로 풀어보고 싶다.

* 노트 필기

'사전캠프' 카테고리의 다른 글

TIL 18  (1) 2024.09.23
WIL 4  (4) 2024.09.20
TIL 16  (4) 2024.09.19
WIL 3  (1) 2024.09.13
TIL 15  (0) 2024.09.13