[SQL 기초] QUIZ 2

jane05·2023년 11월 5일
post-thumbnail

0️⃣ 데이터 확인

select * from refueling;
select * from celab;

1️⃣ celeb 테이블과 refueling 테이블을 연예인 이름을 기준으로 inner join 하고 나이순으로 정렬했을 때 7번째 데이터의 연예인 이름은?

select refueling.이름, celab.age
from celab
INNER JOIN refueling
ON refueling.이름 = celab.name
ORDER BY age;

2️⃣ oil_price 테이블과 refueling 테이블을 주유소 상호를 기준으로 left join 하고 oil_price 테이블의 가격으로 정렬했을 때 6번째 데이터의 상호는?

select oil_price.상호, oil_price.가격
from oil_price
LEFT JOIN refueling
ON refueling.주유소 = oil_price.상호
order by 가격;

3️⃣ oil_price 테이블과 refueling 테이블을 주유소 상호를 기준으로 right join 하고 refueling 테이블의 이름으로 정렬했을 때 3번째 데이터의 상호는?

select refueling.이름, oil_price.상호
from oil_price
RIGHT JOIN refueling
ON refueling.주유소 = oil_price.상호 ORDER BY 이름;

4️⃣ celeb 테이블과 refueling 테이블을 연예인 이름을 기준으로 full outer join 했을때 celeb.name 이 아이유인 데이터는 총 몇개?

SELECT celab.ID AS celab_ID, celab.name AS celab_name, refueling.ID AS refueling_ID, refueling.이름 AS refueling_name
FROM celab
LEFT JOIN refueling
ON celab.name = refueling.이름
UNION
SELECT celab.ID AS celab_ID, celab.name AS celab_name, refueling.ID AS refueling_ID, refueling.이름 AS refueling_name
FROM celab
RIGHT JOIN refueling ON celab.name = refueling.이름;

  • 아이유_개수 구하기
SELECT COUNT(*) AS 아이유_개수
FROM
(SELECT celab.ID AS celab_ID, celab.name AS celab_name, refueling.ID AS refueling_ID, refueling.이름 AS refueling_name
FROM celab
LEFT JOIN refueling
ON celab.name = refueling.이름
UNION
SELECT celab.ID AS celab_ID, celab.name AS celab_name, refueling.ID AS refueling_ID, refueling.이름 AS refueling_name
FROM celab
RIGHT JOIN refueling ON celab.name = refueling.이름) AS combined_data
WHERE combined_data.celab_name = '아이유';

5️⃣ celeb 테이블과 refueling 테이블을 연예인 이름을 기준으로 self join 하여 소속사와 주유소 정보를 가져올때 중복을 제거하고 소속사 이름순으로 정렬하면 3번째 데이터는 다음중 무엇인가? (힌트. distinct agency, 주유소)

select distinct celab.agency, refueling.주유소
from celab, refueling
where celab.name = refueling.이름
order by agency;

6️⃣ 직업이 가수이거나 텔런트인 연예인 중, 주유금액이 가장 큰 연예인의 이름은?

select job.name, refueling.금액
from (select celab.name, celab.job_title from celab where job_title LIKE '%가수%' OR job_title LIKE '%텔런트%') AS job, refueling
where job.name = refueling.이름
order by refueling.금액 DESC;

7️⃣ 강남구에 있는 주유소에서 가장 적은 금액을 주유한 연예인의 이름은?

  • 강남구에 있는 주유소 찾기
select oil_price.상호, oil_price.from oil_price
where oil_price.= '강남구';

  • 가장 적은 금액을 주유한 연예인은?
select refueling.이름, refueling.금액
from (select oil_price.상호, oil_price.from oil_price where oil_price.= '강남구') AS gangnam, refueling
where refueling.주유소 = gangnam.상호
order by refueling.금액;

8️⃣ 주유소 상호에 ‘주유소’를 포함하지 않고 셀프주유가 아닌 주유소에서 가장 최근 주유한 연예인 이름은?

  • 주유소 상호에 ‘주유소’를 포함하지 않고 셀프주유가 아닌 주유소
select oil_price.상호, oil_price.셀프 from oil_price where 상호 NOT LIKE '%주유소' AND 셀프 = 'N';

  • 가장 최근에 주유한 연예인 이름은?
select refueling.이름, refueling.주유소, refueling.주유일
from (select oil_price.상호, oil_price.셀프 from oil_price where 상호 NOT LIKE '%주유소' AND 셀프 = 'N') AS con, refueling
where con.상호 = refueling.주유소
order by 주유일 desc;

✅ 진도도 중요하지만 충분히 내용 익히고 넘어가기

profile
데이터 분석 공부 기록

0개의 댓글