CS/MySQL

[프로그래머스][SQL][SELECT] 상위 n개 레코드

pythaac 2021. 8. 6. 02:28
프로그래머스 SQL 고득점 Kit의 문제입니다.

https://programmers.co.kr/learn/challenges?tab=sql_practice_kit

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

내가 작성한 SQL

-- 동작하지않음
SELECT name FROM anaimal_ins
WHERE MIN(datetime)
  • MIN에 대한 사용과, 이를 조건으로 다른 컬럼의 데이터만 가져오는 방법을 몰랐다

 

다른 사람이 작성한 SQL

-- 방법1
SELECT name FROM animal_ins
ORDER BY datetime LIMIT 1

-- 방법2
SELECT name FROM animal_ins
WHERE datetime=(
SELECT min(datetime) FROM animal_ins
);
  • ORDER BY와 LIMIT를 사용하여 datetime기준으로 정렬된 레코드의 첫번째 row에서 name column만 출력
  • datetime이 최소값을 갖는 결과를 SELECT를 통해 만들어, 해당 값을 WHERE를 이용해 일치하는 값의 레코드 출력

기억해야할 것

  • MIN을 이용한 결과 테이블은 해당 COLUMN을 무조건 포함
  • LIMT으로 결과 row 개수 조정 가능
    • 아무래도 문제의 이름이 n개 레코드이기 때문에, LIMIT 사용이 적절해보인다