- 여러번의 연산 수행
- 조건문에 연산 결과 사용
- 조건에 Query 결과 사용
SELECT column1, splecial_column
FROM
(/* subquery */
SELECT column1, column2 special_column
FROM table1
) a
=> 마지막 a는 서브쿼리의 alias로 넣어줌(메인 쿼리가 서브쿼리의 결과를 사용할 때 필수적)
SELECT column1, column2
FROM table1
WHERE column1 = (SELECT col1 FROM table2)
사용예시)
SELECT order_id, restaurant_name, IF(over_time>0, over_time, 0) over_time
FROM
(
SELECT order_id, restaurant_name, food_preparation_time-25 over_time
FROM food_orders
) a
order_id, restaruant_name, over_time 데이터 조회 FROM 가상의 a 테이블에서 !
a 테이블 => order_id, restaurant_name, over_time 열을 가지고 있는데, 여기서 over_time 컬럼은 food_orders테이블의 food_preparation컬럼의 값들에서 25를 뺀 값을 데이터로 가진 컬럼.
메인 쿼리의 SELECT문에서 over_time은 서브쿼리의 over_time값이 0보다 크면 over_time의 value를 그대로 적어주고, 같거나 작으면 0을 출력.
주문번호와 식당이름, 음식준비시간이 25분초과 시 지연시간을 조회하는 쿼리다.
'SQL' 카테고리의 다른 글
SQL - 'Not given', NULL다루기 (0) | 2024.11.26 |
---|---|
SQL - JOIN(필요한 데이터가 서로 다른 테이블에 있을 때) (0) | 2024.11.26 |
SQL - IF, CASE (조건에 따른 포맷 변경) (0) | 2024.11.22 |
SQL - REPLACE, SUBSTRING, CONCAT(문자 포맷 가공하기) (0) | 2024.11.22 |
SQL - ORDER BY (오름차순, 내림차순) (0) | 2024.11.21 |