[MySQL] 프로그래머스 문제 연습 2

Lake·2024년 4월 19일
0

SQL 문제

목록 보기
5/36
post-thumbnail

동명 동물 수 찾기(GROUP BY)

  • 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

제출한 코드 :

SELECT NAME, COUNT(NAME)
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME;

또는

SELECT NAME, COUNT(*)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME;

COUNT(*) -> name이 NULL인 row도 포함
COUNT(name) -> name이 NULL인 row는 미포함

HAVING

  • GROUP BY 절에 조건을 걸고 싶을 때 = GROUP BY의 WHERE절
  • GROUP BY 다음에 작성(WHERE과 동일한 형식으로)

아픈 동물 찾기(SELECT)

  • 동물 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
    아픈 동물 : INTAKE_CONDITION이 Sick 인 경우를 뜻함

제출한 코드 :

SELECT ANIMAL_ID
       , NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = "Sick"
GROUP BY NAME
ORDER BY ANIMAL_ID;

상위 n개 레코드(SELECT)

  • 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.

제출한 코드 :

SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;

처음에는 냅다 WHERE 쓰려고 함 MAX(DATETIME)을 쓰려 했는데 생각해 보니 그럴이유가 없었다.


최솟값 구하기(SUM, MAX, MIN)

  • 동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

제출한 코드 :

SELECT MIN(DATETIME)
FROM ANIMAL_INS;

어린 동물 찾기(SELECT)

  • 동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
    젊은 동물 : INTAKE_CONDITION이 Aged가 아닌 경우

제출한 코드 :

SELECT ANIMAL_ID
       , NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION <> 'AGED'

<> 대신에 파이썬 마냥 != 써도 됨.


오늘의 TMI

  • 해야할 일이 산더미다;;;;;;;; 그래서 SQL문제는 주말에 좀 각잡고 풀 예정(이번주는)
  • 컨디션이 좋지 않음

0개의 댓글