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 사용이 적절해보인다