일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Java의 이점
- #스파르타내일배움캠프
- static
- Github_token
- 클래스
- 메서드
- diary
- #내일배움캠프
- Git
- 변수의 다양성
- 성장기록
- 포맷은 최후의 보루
- TiL_1st_0419
- 객체지향 언어
- 인스턴스
- 스파르타내일배움캠프TIL
- GitHub
- Diary 해우소
- 회고록
- KPT
- 생성자
- 감사기록
- 해우소
- Token
- JVM
- 스레드
- #스파르타내일배움캠프TIL
- Java
- 내일배움캠프
- 스파르타내일배움캠프
- Today
- Total
몬그로이
SQL04 본문
subquery 문 기본 구조
select column1, special_column
from
( /* subquery */
select column1, column2 special_column
from table1
) a
음식 준비 시간이 25분 초과 하는 경우 찾아내기
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
음식점의 평균 단가별 segmentation 을 진행하고, 그룹에 따라 수수료 연산하기
(수수료 구간 - 5000원 미만 0.05% / 20000원 미만 1% / 30000원 미만 2% / 30000원 초과 3%)
select restaurant_name,
price_per_plate*ratio_of_add "수수료"
from
(
select restaurant_name,
case when price_per_plate<5000 then 0.005
when price_per_plate between 5000 and 19999 then 0.01
when price_per_plate between 20000 and 29999 then 0.02
else 0.03 end ratio_of_add,
price_per_plate
from
(
select restaurant_name, avg(price/quantity) price_per_plate
from food_orders
group by 1
) a
) b
음식점의 지역과 평균 배달시간으로 segmentation 하기
SELECT restaurant_name,
sido,
avg_delivery_time,
case when avg_delivery_time <= 20 then '<=20'
when avg_delivery_time > 20 and avg_delivery_time <= 30 then '20< x <= 30'
else '>30' end delivery_time_segment
FROM
(
SELECT restaurant_name,
substr(addr, 1, 2) sido,
avg(delivery_time) avg_delivery_time
FROM food_orders
group by 1, 2
) a
음식 타입별 총 주문수량과 음식점 수를 연산하고, 주문수량과 음식점수 별 수수료율을 산정하기
(음식점수 5개 이상, 주문수 30개 이상 → 수수료 0.05%
음식점수 5개 이상, 주문수 30개 미만 → 수수료 0.08%
음식점수 5개 미만, 주문수 30개 이상 → 수수료 1%
음식점수 5개 미만, 주문수 30개 미만 → 수수료 2%)
select cuisine_type,
total_quantity,
count_res,
case when count_res >= 5 and total_quantity >= 30 then 0.005
when count_res >= 5 and total_quantity < 30 then 0.008
when count_res < 5 and total_quantity >= 30 then 0.01
when count_res < 5 and total_quantity < 30 then 0.02
end rate
FROM
(
SELECT cuisine_type,
sum(quantity) total_quantity,
count(distinct restaurant_name) count_res
from food_orders
group by 1
)
음식점의 총 주문수량과 주문 금액을 연산하고, 주문 수량을 기반으로 수수료 할인율 구하기
(할인조건
수량이 5개 이하 → 10%
수량이 15개 초과, 총 주문금액이 300000 이상 → 0.5%
이 외에는 일괄 1%)
SELECT restaurant_name,
total_quantity,
earning,
case when total_quantity <= 5 then 0.1
when total_quantity > 15 and earning >= 300000 then 0.005
else 0.01 end discount_rate
FROM
(
SELECT restaurant_name,
sum(quantity) total_quantity,
sum(price) earning
from food_orders
group by 1
) a
'Organizing Docs > SQL Docs' 카테고리의 다른 글
SQL 05 (0) | 2024.06.29 |
---|---|
SQL 03 (0) | 2024.06.29 |
SQL 02 (0) | 2024.06.27 |
SQL 01 (0) | 2024.06.27 |
SQL(Structured Query Language) (0) | 2024.05.25 |