[강의명]
패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반
[수강목록]
2주차 과제 풀이 (SQL 21~38번 문제)
[강의내용]
문제21번) film 테이블을 활용하여, film 테이블의 100개의 row만 확인해보세요.
LIMIT 절을 입력하면 행 수를 설정할 수 있다.
(참고로 Oracle에서는 LIMIT가 지원되지 않기 때문에 대신 ROWNUM 절을 사용한다)
SELECT *
FROM film f
LIMIT 100;
100개의 행만 출력되는 것을 확인할 수 있다.
(쿼리 결과 생략)
문제22번) actor의 성(last_name)이 Jo로 시작하는 사람의 id 값이 가장 낮은 사람 한사람에 대하여,
사람의 id 값과 이름, 성을 알려주세요.
문자열 타입 데이터를 추출하는 조건을 부여하기 위해 LIKE 절을 이용한다.
성이 Jo로 시작하는 것은 LIKE 'Jo%'로 표현할 수 있다.
Jo뒤에 어떤 텍스트가 오던 상관없다. (혹은 Jo 뒤에 값이 없어도 추출)
SELECT actor_id, first_name, last_name
FROM actor a
WHERE last_name LIKE 'Jo%'
ORDER BY actor_id
LIMIT 1;
문제23번) film 테이블을 이용하여, film 테이블의 아이디값이 1~10 사이에 있는 모든 컬럼을 확인해주세요.
SELECT *
FROM film f
WHERE film_id <= 10;
문제24번) country 테이블을 이용하여, country 이름이 A로 시작하는 country를 확인해주세요.
22번 문제의 풀이와 동일하다.
SELECT *
FROM country c
WHERE country LIKE 'A%'
문제25번) country 테이블을 이용하여, country 이름이 s로 끝나는 country를 확인해주세요.
24번 문제와 동일하다. %의 위치만 맨 앞으로 지정하면 된다.
SELECT *
FROM country c
WHERE country LIKE '%s';
문제26번) address 테이블을 이용하여, 우편번호(postal_code) 값이 77로 시작하는 주소에 대하여,
address_id, address, district, postal_code 컬럼을 확인해주세요.
우편번호는 숫자로 이루어져 있지만 텍스트 타입 컬럼임을 주의해야 한다.
마찬가지로 따옴표 안에 넣어주고 %를 넣어 해결하면 된다.
SELECT address_id, address, district, postal_code
FROM address a
WHERE postal_code LIKE '77%';
문제27번) address 테이블을 이용하여, 우편번호(postal_code) 값이 두번째 글자가 1인 우편번호의
address_id, address, district, postal_code 컬럼을 확인해주세요.
두번째 글자가 1인 우편번호들을 추출하려 한다.
첫번째 글자가 반드시 존재해야하는데, 언더바를 넣어주면 조건을 설정할 수 있다.
'_1%' 와 같이 입력하면 조건을 충족시킬 수 있다.
SELECT address_id, address, district, postal_code
FROM address a
WHERE postal_code LIKE '_1%';
우편번호 두번째 자리가 1인 데이터들을 잘 추출했다.
문제28번) payment 테이블을 이용하여, 고객번호가 341에 해당하는 사람이 2007년 2월 15~16일 사이의
모든 결제내역을 확인해주세요.
A~B 사이의 범위를 불러오려면 WHERE절에서 BETWEEN을 이용하면 된다.
payment_date가 날짜뿐만 아니라 시간까지 포함하고 있기 때문에
date 함수를 통해 날짜까지만으로 바꿔주어야 한다.
SELECT *
FROM payment p
WHERE customer_id = 341
AND date(payment_date) BETWEEN '2007-02-15' AND '2007-02-16';
문제29번) payment 테이블을 이용하여, 고객번호가 355에 해당 하는 사람의 결제 금액이 1~3원 사이에 해당하는
모든 결제 내역을 확인해주세요.
28번 문제와 동일하게 해결할 수 있다.
SELECT *
FROM payment p
WHERE customer_id = 355
AND amount BETWEEN 1 AND 3;