대여 기록이 존재하는 자동차 리스트 구하기
SELECT distinct r.CAR_ID
from CAR_RENTAL_COMPANY_CAR r
inner join CAR_RENTAL_COMPANY_RENTAL_HISTORY h
on r.CAR_ID = h.CAR_ID
where r.CAR_TYPE = '세단'
and month(h.START_DATE) = 10
order by 1 desc
식품분류별 가장 비싼 식품의 정보 조회하기
- 서브쿼리에 별칭을 무조건 지어줘야 함! -> Every derived table must have its own alias
select a.CATEGORY,
a.PRICE MAX_PRICE,
a.PRODUCT_NAME
from
(
SELECT CATEGORY,
PRODUCT_NAME,
rank() over(partition by CATEGORY order by PRICE desc) as ranking,
PRICE
from FOOD_PRODUCT
) a
where a.ranking = 1
and a.CATEGORY in ('과자', '국', '김치', '식용유')
order by 2 desc
5월 식품들의 총매출 조회하기
SELECT p.PRODUCT_ID,
p.PRODUCT_NAME,
sum(p.PRICE * o.AMOUNT) TOTAL_SALES
from FOOD_PRODUCT p
inner join FOOD_ORDER o on p.PRODUCT_ID = o.PRODUCT_ID
where o.PRODUCE_DATE >= '2022-05-01' and o.PRODUCE_DATE < '2022-06-01'
group by 1, 2
order by 3 desc, 1
없어진 기록 찾기
- left join을 할 때 on을 걸어주는 오른쪽에 있는 테이블에 존재하지 않아도 되는 값임
- exists : 메인 쿼리에 먼저 접근하여 row를 하나 가져오고 exists의 서브쿼리를 실행시켜 결과가 존재하는지를 판단
- 서브쿼리의 결과값에서 필터링해줌(in 과 같은 역할)
SELECT o.ANIMAL_ID, o.NAME
FROM ANIMAL_OUTS o
LEFT JOIN ANIMAL_INS i
ON o.ANIMAL_ID = i.ANIMAL_ID
where i.ANIMAL_ID is null
order by 1
SELECT ao.ANIMAL_ID, ao.NAME
FROM ANIMAL_OUTS ao
WHERE NOT EXISTS (
SELECT i.ANIMAL_ID
FROM ANIMAL_INS i
WHERE i.ANIMAL_ID = ao.ANIMAL_ID
)
order by ao.ANIMAL_ID
'SQL' 카테고리의 다른 글
SQL 총연습 (1) (1) | 2024.12.24 |
---|---|
SELECT 연습(4) (0) | 2024.12.20 |
SELECT 연습(3) (1) | 2024.12.19 |
SELECT 연습(2) (2) | 2024.12.18 |
SELECT 연습(1) (0) | 2024.12.17 |