-
<프로그래머스> 상위 n개 레코드코딩테스트/SQL 코딩테스트 2023. 12. 11. 20:01
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59405
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
SQL 문제
- 문제 요구사항
- 동물보호소에 가장 먼저 들어온 동물의 이름을 조회
- 즉, DATE가 가장 이른 행 1행을 조회하는 것
Oracle에서는 ROWNUM
MySQL에서는 LIMIT을 이용해서 조회가 가능함
1) Oracle
SELECT NAME FROM ANIMAL_INS WHERE ROWNUM=1 ORDER BY DATETIME;
위와 같이 코드를 실행하면 원하는 결과가 반환되지 않는다. 왜냐하면
FROM - WHERE - GROUP BY - SELECT - ORDER BY 순으로 쿼리가 실행되기 때문이다.
따라서 ORDER BY 전에 WHERE 조건절의 ROWNUM이 할당 되어버린 것이다.
원하는 결과를 결과를 얻기 위해서는 서브쿼리를 사용해서 조회한 데이터를 기준으로 WHERE조건을 적용시켜야한다.
SELECT NAME FROM ( SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME ) WHERE ROWNUM=1;
2) MySQL
SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1;
LIMIT + 숫자(n)를 사용하면 상위 n개의 레코드만을 조회할 수 있다.
LIMIT 1은 상위 1개의 레코드만을 조회하겠다는 뜻이 된다.
'코딩테스트 > SQL 코딩테스트' 카테고리의 다른 글
<프로그래머스> 어린 동물 찾기 (0) 2023.12.11 <프로그래머스> 최솟값 구하기 (0) 2023.12.11 <프로그래머스> 아픈 동물 찾기 (1) 2023.12.11 <프로그래머스> 동명 동물의 수 찾기 (2) 2023.12.07 <프로그래머스> 동물의 수 구하기 (1) 2023.12.07 - 문제 요구사항