------------------------------------------------------------------------
-- BOOSTER QUIZ 11-1-1
------------------------------------------------------------------------
ord_no shop_id ord_dtm ord_amt ord_amt_sum_ov ord_cnt_ov max_dtm_ov
------ ------- ------------------- -------- -------------- ---------- -------------------
124121 S092 2021-09-03 06:32:00 4500.000 17000.000 4 2021-09-10 06:31:00
124135 S092 2021-09-03 06:36:00 4000.000 17000.000 4 2021-09-10 06:31:00
125684 S092 2021-09-09 06:32:00 4000.000 17000.000 4 2021-09-10 06:31:00
125994 S092 2021-09-10 06:31:00 4500.000 17000.000 4 2021-09-10 06:31:00
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-1-2
------------------------------------------------------------------------
shop_id shop_nm chair_qty shop_cnt_ov chair_qty_sum_ov
------- ---------------- --------- ----------- ----------------
S014 Columbus-1st 23 3 77
S022 Los Angeles-2nd 20 3 77
S026 Philadelphia-2nd 34 3 77
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-1-3
------------------------------------------------------------------------
SELECT t1.ord_no ,t1.ord_dtm ,t1.mbr_id ,t1.ord_amt
,SUM(t1.ord_amt) OVER() ord_amt_sum_ov
,COUNT(*) OVER() ord_cnt_ov
FROM startdbmy.tr_ord t1
WHERE t1.ord_dtm >= STR_TO_DATE('20220101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20220102','%Y%m%d')
AND t1.mbr_id = 'M0888'
ORDER BY t1.ord_no;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-1-4
------------------------------------------------------------------------
SELECT t2.* ,ROUND(t2.ord_amt / t2.ord_amt_sum_ov ,2) ord_amt_rat_sum
FROM (
SELECT t1.ord_no ,t1.ord_dtm ,t1.mbr_id ,t1.ord_amt
,SUM(t1.ord_amt) OVER() ord_amt_sum_ov
,COUNT(*) OVER() ord_cnt_ov
FROM startdbmy.tr_ord t1
WHERE t1.ord_dtm >= STR_TO_DATE('20220101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20220102','%Y%m%d')
AND t1.mbr_id = 'M0888'
ORDER BY t1.ord_no
) t2;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-1-5
------------------------------------------------------------------------
SELECT t1.shop_id
,t1.shop_nm
,t1.chair_qty
,MAX(t1.chair_qty) OVER() chair_qty_max
,ROUND(t1.chair_qty / MAX(t1.chair_qty) OVER(), 2) chair_qty_rat_max
FROM startdbmy.ms_shop t1
WHERE t1.chair_qty >= 70
ORDER BY t1.chair_qty DESC;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-2-1
------------------------------------------------------------------------
ord_no shop_id ord_dtm ord_amt ord_dtm_rank_ov
------ ------- ------------------- -------- ---------------
127776 S261 2021-09-22 06:46:00 8500.000 5
127767 S261 2021-09-22 06:39:00 4000.000 4
127764 S261 2021-09-22 06:38:00 4000.000 3
127751 S261 2021-09-22 06:31:00 4000.000 2
123551 S261 2021-09-01 06:32:00 4000.000 1
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-2-2
------------------------------------------------------------------------
SELECT t1.mbr_id ,t1.nick_nm ,t1.join_dtm ,t1.mbr_gd
,RANK() OVER(ORDER BY t1.join_dtm ASC) join_dtm_rank_ov
FROM startdbmy.ms_mbr t1
WHERE t1.mbr_gd = 'PLAT'
AND t1.join_tp = 'INV'
AND t1.join_dtm >= STR_TO_DATE('20220401','%Y%m%d')
AND t1.join_dtm < STR_TO_DATE('20220501','%Y%m%d');
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-3-1
------------------------------------------------------------------------
SELECT t4.item_cat ,t5.item_cat_nm ,t4.ord_qty_sum
,RANK() OVER(ORDER BY t4.ord_qty_sum DESC) ord_qty_sum_rank_ov
FROM (
SELECT t3.item_cat
,SUM(t2.ord_qty) ord_qty_sum
FROM startdbmy.tr_ord t1
INNER JOIN startdbmy.tr_ord_det t2
ON (t2.ord_no = t1.ord_no)
INNER JOIN startdbmy.ms_item t3
ON (t3.item_id = t2.item_id)
WHERE t1.ord_dtm >= STR_TO_DATE('20220101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20220201','%Y%m%d')
GROUP BY t3.item_cat
) t4
INNER JOIN startdbmy.ms_item_cat t5
ON (t5.item_cat = t4.item_cat);
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-3-2
------------------------------------------------------------------------
SELECT t3.shop_oper_tp
,(SELECT MAX(x.base_cd_nm)
FROM startdbmy.cm_base_cd x
WHERE x.base_cd_dv = 'shop_oper_tp'
AND x.base_cd = t3.shop_oper_tp) shop_oper_tp_nm
,t3.ord_amt_sum
,ROUND(t3.ord_amt_sum / SUM(t3.ord_amt_sum) OVER() * 100,2) ord_amt_sum_pct
FROM (
SELECT t1.shop_oper_tp
,SUM(t2.ord_amt) ord_amt_sum
FROM startdbmy.ms_shop t1
INNER JOIN startdbmy.tr_ord t2
ON (t2.shop_id = t1.shop_id)
WHERE t2.ord_dtm >= STR_TO_DATE('20220101','%Y%m%d')
AND t2.ord_dtm < STR_TO_DATE('20220201','%Y%m%d')
GROUP BY t1.shop_oper_tp
) t3
ORDER BY ord_amt_sum_pct DESC;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-4-1
------------------------------------------------------------------------
SELECT t1.mbr_id ,t1.ord_dtm ,t1.ord_amt
,SUM(t1.ord_amt) OVER(PARTITION BY t1.mbr_id) ord_amt_ov_mbr
FROM startdbmy.tr_ord t1
WHERE t1.mbr_id IN ('M0100','M0200','M0300')
AND t1.ord_dtm >= STR_TO_DATE('20230101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20230201','%Y%m%d')
ORDER BY t1.mbr_id ,t1.ord_dtm;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-4-2
------------------------------------------------------------------------
SELECT t1.mbr_id ,t1.ord_dtm ,t1.ord_amt
,SUM(t1.ord_amt) OVER(PARTITION BY t1.mbr_id) ord_amt_ov_mbr
,RANK() OVER(PARTITION BY t1.mbr_id ORDER BY t1.ord_amt DESC) ord_amt_rank_ov_mbr
FROM startdbmy.tr_ord t1
WHERE t1.mbr_id IN ('M0100','M0200','M0300')
AND t1.ord_dtm >= STR_TO_DATE('20230101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20230201','%Y%m%d')
ORDER BY t1.mbr_id ,t1.ord_dtm;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-4-3
------------------------------------------------------------------------
SELECT t1.ord_no ,t1.shop_id ,t1.ord_dtm ,t1.ord_amt
,SUM(t1.ord_amt) OVER(PARTITION BY DATE_FORMAT(t1.ord_dtm,'%Y%m')) ord_amt_sum_ov_ym
FROM startdbmy.tr_ord t1
WHERE t1.ord_dtm >= STR_TO_DATE('20230101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20230401','%Y%m%d')
AND t1.ord_amt >= 10000
AND t1.shop_id = 'S282'
ORDER BY t1.shop_id, t1.ord_dtm;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-4-4
------------------------------------------------------------------------
SELECT t1.ord_no ,t4.item_cat ,t4.item_cat_nm ,t3.item_nm ,DATE_FORMAT(t1.ord_dtm,'%H') ord_hour, t2.ord_qty
,SUM(t2.ord_qty) OVER(PARTITION BY DATE_FORMAT(t1.ord_dtm,'%H'), t4.item_cat) ord_qty_sum_ov_hour_cat
FROM startdbmy.tr_ord t1
INNER JOIN startdbmy.tr_ord_det t2
ON (t2.ord_no = t1.ord_no)
INNER JOIN startdbmy.ms_item t3
ON (t3.item_id = t2.item_id)
INNER JOIN startdbmy.ms_item_cat t4
ON (t4.item_cat = t3.item_cat)
WHERE t1.ord_dtm >= STR_TO_DATE('20230101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20230102','%Y%m%d')
AND t1.ord_amt >= 10000
AND t1.shop_id IN ('S100')
AND t4.item_cat IN ('BKR','COF')
ORDER BY t1.shop_id ,ord_hour;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-4-5
------------------------------------------------------------------------
SELECT t3.*
,RANK() OVER(PARTITION BY t3.ord_ymd ORDER BY t3.ord_amt_sum DESC) ord_amt_rank_ov_ymd
FROM (
SELECT t2.shop_id ,MAX(t2.shop_nm) shop_nm ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d') ord_ymd
,SUM(t1.ord_amt) ord_amt_sum
FROM startdbmy.tr_ord t1
INNER JOIN startdbmy.ms_shop t2
ON (t2.shop_id = t1.shop_id)
WHERE t1.ord_dtm >= STR_TO_DATE('20240101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20240104','%Y%m%d')
AND t2.shop_oper_tp = 'FLAG'
AND t2.shop_size >= 160
GROUP BY t2.shop_id ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d')
ORDER BY t2.shop_id ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d')
) t3;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-4-6
------------------------------------------------------------------------
SELECT *
FROM (
SELECT t3.*
,RANK() OVER(PARTITION BY t3.ord_ymd ORDER BY t3.ord_amt_sum DESC) ord_amt_rank_ov
FROM (
SELECT t2.shop_id ,MAX(t2.shop_nm) shop_nm ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d') ord_ymd
,SUM(t1.ord_amt) ord_amt_sum
FROM startdbmy.tr_ord t1
INNER JOIN startdbmy.ms_shop t2
ON (t2.shop_id = t1.shop_id)
WHERE t1.ord_dtm >= STR_TO_DATE('20240101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20240104','%Y%m%d')
AND t2.shop_oper_tp = 'FLAG'
AND t2.shop_size >= 160
GROUP BY t2.shop_id ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d')
ORDER BY t2.shop_id ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d')
) t3
) t4
WHERE t4.ord_amt_rank_ov = 1;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-4-7
------------------------------------------------------------------------
SELECT *
FROM (
SELECT DATE_FORMAT(t1.ord_dtm,'%Y') ord_yy ,t3.item_id
,MAX(t3.item_nm) item_nm
,SUM(t2.ord_qty) ord_qty_sum
,RANK() OVER(PARTITION BY DATE_FORMAT(t1.ord_dtm,'%Y') ORDER BY SUM(t2.ord_qty) DESC) ord_qty_sum_rank_ov
FROM startdbmy.tr_ord t1
INNER JOIN startdbmy.tr_ord_det t2
ON (t2.ord_no = t1.ord_no)
INNER JOIN startdbmy.ms_item t3
ON (t3.item_id = t2.item_id)
WHERE t1.ord_dtm >= STR_TO_DATE('20200101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20250101','%Y%m%d')
AND t3.item_cat = 'COF'
GROUP BY DATE_FORMAT(t1.ord_dtm,'%Y') ,t3.item_id
) t4
WHERE t4.ord_qty_sum_rank_ov = 1;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-5-1
------------------------------------------------------------------------
ord_no shop_id ord_dtm ord_amt ord_amt_bf
------ ------- ------------------- --------- ----------
124121 S092 2021-09-03 06:32:00 4500.000 NULL
124135 S092 2021-09-03 06:36:00 4000.000 4500.000
125684 S092 2021-09-09 06:32:00 4000.000 4000.000
125994 S092 2021-09-10 06:31:00 4500.000 4000.000
126773 S092 2021-09-14 06:31:00 4500.000 4500.000
126781 S092 2021-09-14 06:38:00 14000.000 4500.000
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-5-2
------------------------------------------------------------------------
SELECT t5.item_cat
,t5.item_cat_nm
,t5.ord_ym
,t5.ord_amt_sum
,LAG(t5.ord_amt_sum) OVER(PARTITION BY t5.item_cat ORDER BY t5.ord_ym ASC) ord_amt_sum_bf_cat
,t5.ord_amt_sum
- LAG(t5.ord_amt_sum) OVER(PARTITION BY t5.item_cat ORDER BY t5.ord_ym ASC) ord_amt_sum_cat_diff
FROM (
SELECT t4.item_cat
,MAX(t4.item_cat_nm) item_cat_nm
,DATE_FORMAT(t1.ord_dtm,'%Y%m') ord_ym
,SUM(t2.ord_qty * t2.sale_prc) ord_amt_sum
FROM startdbmy.tr_ord t1
INNER JOIN startdbmy.tr_ord_det t2
ON (t2.ord_no = t1.ord_no)
INNER JOIN startdbmy.ms_item t3
ON (t3.item_id = t2.item_id)
INNER JOIN startdbmy.ms_item_cat t4
ON (t4.item_cat = t3.item_cat)
WHERE t1.ord_dtm >= STR_TO_DATE('20220101','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20220401','%Y%m%d')
GROUP BY t4.item_cat ,DATE_FORMAT(t1.ord_dtm,'%Y%m')
ORDER BY t4.item_cat ,DATE_FORMAT(t1.ord_dtm,'%Y%m')
) t5;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-6-1
------------------------------------------------------------------------
SELECT t4.item_id ,t4.item_nm ,t4.ord_ymd ,t4.ord_qty_sum
,SUM(t4.ord_qty_sum) OVER(ORDER BY t4.ord_ymd ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ord_qty_sum_run_total
FROM (
SELECT t3.item_id ,MAX(t3.item_nm) item_nm
,DATE_FORMAT(t1.ord_dtm,'%Y%m%d') ord_ymd
,SUM(t2.ord_qty) ord_qty_sum
FROM startdbmy.tr_ord t1
INNER JOIN startdbmy.tr_ord_det t2
ON (t2.ord_no = t1.ord_no)
INNER JOIN startdbmy.ms_item t3
ON (t3.item_id = t2.item_id)
WHERE t1.ord_dtm >= STR_TO_DATE('20221220','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20221226','%Y%m%d')
AND t2.item_id = 'AMB'
GROUP BY t3.item_id ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d')
ORDER BY t3.item_id ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d')
) t4;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-6-2
------------------------------------------------------------------------
SELECT t4.item_id ,t4.item_nm ,t4.ord_ymd ,t4.ord_qty_sum
,SUM(t4.ord_qty_sum) OVER(PARTITION BY t4.item_id ORDER BY t4.ord_ymd ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) ord_qty_sum_run_total_item
FROM (
SELECT t3.item_id ,MAX(t3.item_nm) item_nm
,DATE_FORMAT(t1.ord_dtm,'%Y%m%d') ord_ymd
,SUM(t2.ord_qty) ord_qty_sum
FROM startdbmy.tr_ord t1
INNER JOIN startdbmy.tr_ord_det t2
ON (t2.ord_no = t1.ord_no)
INNER JOIN startdbmy.ms_item t3
ON (t3.item_id = t2.item_id)
WHERE t1.ord_dtm >= STR_TO_DATE('20221220','%Y%m%d')
AND t1.ord_dtm < STR_TO_DATE('20221226','%Y%m%d')
AND t2.item_id IN ('AMB','IAMB')
GROUP BY t3.item_id ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d')
ORDER BY t3.item_id ,DATE_FORMAT(t1.ord_dtm,'%Y%m%d')
) t4;
------------------------------------------------------------------------
-- BOOSTER QUIZ 11-6-3
------------------------------------------------------------------------
SELECT t1.base_ymd
,IFNULL(t2.join_cnt,0) join_cnt
,MAX(IFNULL(t2.join_cnt,0)) OVER(ORDER BY t1.base_ymd ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) join_cnt_max_ov_10d
FROM startdbmy.cm_base_dt t1
LEFT OUTER JOIN (
SELECT DATE_FORMAT(a.join_dtm,'%Y%m%d') join_ymd
,COUNT(*) join_cnt
FROM startdbmy.ms_mbr a
WHERE a.join_dtm >= STR_TO_DATE('20220701','%Y%m%d')
AND a.join_dtm < STR_TO_DATE('20220801','%Y%m%d')
GROUP BY DATE_FORMAT(a.join_dtm,'%Y%m%d')
) t2
ON (t2.join_ymd = t1.base_ymd)
WHERE t1.base_ymd LIKE '202207%'
ORDER BY t1.base_ymd;
SQL
복사