본문 바로가기

SQL

SQL 총연습 (2)

대여 기록이 존재하는 자동차 리스트 구하기

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