์ผ๊ณ, ์๊ณ ๋งค์ ๋งค์ถ

์ด์ ๊ฐ์ด ๋ํ๋๋๋ก ์์ฑํ ๊ฒ์ด๋ค.
์ฌ์ฉ ํ ์ด๋ธ
a - ์ํ๋ง์คํฐ
d - ๋งค์ถ
c0 - ๋งค์ ์ ํ ํค๋
c1 - ๋งค์ ์ ํ ๋ฐ๋
์ฟผ๋ฆฌ
/*๋งค์ถ ์ผ๊ณ*/
/*s_amt:๋งค์ถ์ด์ก, v_amt:๋ถ๊ฐ์ธ, qty:์๋, type:๊ฑฐ๋ํํ*/
SELECT SUM(d.s_amt) - SUM(d.v_amt * d.qty) AS "๋งค์ถ์ก",
SUM(d.v_amt * d.qty) AS "๋ถ๊ฐ์ธ",
SUM(d.s_amt) AS "๋งค์ถ์ด์ก",
SUM(d.s_amt) - SUM(d.w_amt) AS "๋งค์ถ์ด์ต",
SUM(DECODE(a.type, '0', d.s_amt, 0)) AS "์ง์๋งค์ถ", /*0์ด๋ฉด ์ง์๋งค์ถ*/
SUM(DECODE(a.type, '2', d.s_amt, 0)) AS "์์๋ฃ๋งค์ถ", /*2์ด๋ฉด ์์๋ฃ๋งค์ถ*/
SUM(DECODE(a.type, '1', d.s_amt, 0)) AS "์๋๋งค์ถ" /*1์ด๋ฉด ์๋๋งค์ถ*/
FROM a /*์ ์ํ๋ง์คํฐ*/
, d /*๋งค์ถ*/
WHERE a.mall_code = d.mall_code /*๋งค์ฅ*/
AND a.sto_code = d.sto_code /*์ ํฌ*/
AND a.sku_code = d.sku_code /*์ํ*/
AND a.mall_code = '1234'
AND a.sto_code = '1'
AND d.date = '20240827' /*๋ ์ง*/
UNION ALL
/*๋งค์ถ ์๊ณ*/
SELECT SUM(d.s_amt) - SUM(d.v_amt * d.qty) AS "๋งค์ถ์ก",
SUM(d.v_amt * d.qty) AS "๋ถ๊ฐ์ธ",
SUM(d.s_amt) AS "๋งค์ถ์ด์ก",
SUM(d.s_amt) - SUM(d.w_amt) AS "๋งค์ถ์ด์ต",
SUM(DECODE(a.type, '0', d.s_amt, 0)) AS "์ง์๋งค์ถ", /*0์ด๋ฉด ์ง์๋งค์ถ*/
SUM(DECODE(a.type, '2', d.s_amt, 0)) AS "์์๋ฃ๋งค์ถ", /*2์ด๋ฉด ์์๋ฃ๋งค์ถ*/
SUM(DECODE(a.type, '1', d.s_amt, 0)) AS "์๋๋งค์ถ" /*1์ด๋ฉด ์๋๋งค์ถ*/
FROM a /*์ ์ํ๋ง์คํฐ*/
, d /*๋งค์ถ*/
WHERE a.mall_code = d.mall_code
AND a.sto_code = d.sto_code
AND a.sku_code = d.sku_code
AND a.mall_code = '1234'
AND a.sto_code = '1'
AND SUBSTRING(d.date, 1, 6) = '202408'
UNION ALL
/*๋งค์
์ผ๊ณ*/
/*flag:๋งค์
๊ตฌ๋ถ(0:์ ์, 1:๋ฐํ), wprc:์๊ฐ๋จ๊ฐ, vat:๋ถ๊ฐ์ธ๋จ๊ฐ, p_wamt:์๊ฐ*/
SELECT SUM(DECODE(c0.flag, '0', 1, '1', -1) * (c1.wprc * c1.qty)) AS "๋งค์
์ก",
SUM(DECODE(c0.flag, '0', 1, '1', -1) * (c1.vat * c1.qty)) AS "๋ถ๊ฐ์ธ",
SUM(DECODE(c0.flag, '0', 1, '1', -1) * c1.p_wamt) AS "๋งค์
์ด์ก",
NULL /*์ด๋ฐ์์ผ๋ก NULL ASํด์ค๋ ๋๋๋ฐ*/ AS "๋งค์ถ์ด์ต",
NULL /*์ด๋ ๊ฒ NULL ์ง์๋งค์ถ ์ด๋ฐ์์ผ๋ก ํด์ค๋ ๋จ.*/ "์ง์๋งค์ถ",
NULL AS "์์๋ฃ๋งค์ถ",
NULL AS "์๋๋งค์ถ"
FROM c0 /*๋งค์
์ ํ ํค๋*/
, c1 /*๋งค์
์ ํ ๋ฐ๋*/
WHERE c0.mall_code = c1.mall_code
AND c0.date = c1.date
AND c0.sto_code = c1.sto_code
AND c0.slip_num = c1.slip_num
AND c1.mall_code = '1234'
AND c1.sto_code = '1'
AND c1.date = '20240827'
UNION ALL
/*๋งค์
์๊ณ*/
SELECT SUM(DECODE(c0.flag, '0', 1, '1', -1) * ROUND(c1.wprc * c1.qty)) AS "๋งค์
์ก",
SUM(DECODE(c0.flag, '0', 1, '1', -1) * (c1.vat * c1.qty)) AS "๋ถ๊ฐ์ธ",
SUM(DECODE(c0.flag, '0', 1, '1', -1) * c1.p_wamt) AS "๋งค์
์ด์ก",
NULL AS "๋งค์ถ์ด์ต",
NULL AS "์ง์๋งค์ถ",
NULL AS "์์๋ฃ๋งค์ถ",
NULL AS "์๋๋งค์ถ"
FROM c0 /*๋งค์
์ ํ ํค๋*/
, c1 /*๋งค์
์ ํ ๋ฐ๋*/
WHERE c0.mall_code = c1.mall_code
AND c0.date = c1.date
AND c0.sto_code = c1.sto_code
AND c0.slip_num = c1.slip_num
AND c1.mall_code = '1234'
AND c1.sto_code = '1'
AND SUBSTRING(c1.date, 1, 6) = '202408';
๊ฒฐ๊ณผ

์ด์ ๊ฐ์ด ๋ํ๋ฌ๋ค.
์ผ๋ณ/์๋ณ ๋งค์ ๋๋น ์ด์ต๋ฅ
์์ ์ฟผ๋ฆฌ๋ฅผ ํ์ฉํด ์ผ๋ณ, ์๋ณ ๋งค์ ๋๋น ์ด์ต๋ฅ ์ ๋ํ๋ด๋ณด๋๋ก ํ์.
์ฟผ๋ฆฌ
SELECT ROUND(((A.sales - B.purchase) / A.sales) * 100, 2) AS "์ผ๋ณ ์๋ณ ๋งค์
๋๋น ์ด์ต์จ", /*์์์ ์๋ ๋์๋ฆฌ์๊น์ง*/
A.sales - B.purchase AS "์ด์ต์ก"
FROM (SELECT SUM(d.s_amt) AS sales /*์ด ๋งค์ถ*/
FROM a /*์ ์ํ๋ง์คํฐ*/
, d /*๋งค์ถ*/
WHERE a.mall_code = d.mall_code /*๋งค์ฅ*/
AND a.sto_code = d.sto_code /*์ ํฌ*/
AND a.sku_code = d.sku_code /*์ํ*/
AND a.mall_code = '1234'
AND a.sto_code = '1'
AND d.date = '20240827' /*๋ ์ง*/) A,
/*flag:๋งค์
๊ตฌ๋ถ(0:์ ์, 1:๋ฐํ), p_wamt:์๊ฐ*/
(SELECT SUM(DECODE(c0.flag, '0', 1, '1', -1) * c1.p_wamt) AS purchase /*์ด ๋งค์
*/
FROM c0 /*๋งค์
์ ํ ํค๋*/
, c1 /*๋งค์
์ ํ ๋ฐ๋*/
WHERE c0.mall_code = c1.mall_code /*๋งค์ฅ*/
AND c0.date = c1.date /*๋ ์ง*/
AND c0.sto_code = c1.sto_code /*์ ํฌ*/
AND c0.slip_num = c1.slip_num /*์ ํ๋ฒํธ*/
AND c1.mall_code = '1234'
AND c1.sto_code = '1'
AND c1.date = '20240827' /*๋ ์ง*/) B
UNION ALL
SELECT ROUND(((A.sales - B.purchase) / A.sales) * 100, 2) AS "์ผ๋ณ ์๋ณ ๋งค์
๋๋น ์ด์ต์จ",/*์์์ ์๋ ๋์๋ฆฌ์๊น์ง*/
A.sales - B.purchase AS "์ด์ต์ก"
FROM (SELECT SUM(d.s_amt) AS sales /*์ด ๋งค์ถ*/
FROM a /*์ ์ํ๋ง์คํฐ*/
, d /*๋งค์ถ*/
WHERE a.mall_code = d.mall_code /*๋งค์ฅ*/
AND a.sto_code = d.sto_code /*์ ํฌ*/
AND a.sku_code = d.sku_code /*์ํ*/
AND a.mall_code = '1234'
AND a.sto_code = '1'
AND SUBSTRING(d.date, 1, 6) = '202408') A, /*๋
์*/
/*flag:๋งค์
๊ตฌ๋ถ(0:์ ์, 1:๋ฐํ), p_wamt:์๊ฐ*/
(SELECT SUM(DECODE(c0.flag, '0', 1, '1', -1) * c1.p_wamt) AS purchase /*์ด ๋งค์
*/
FROM c0 /*๋งค์
์ ํ ํค๋*/
, c1 /*๋งค์
์ ํ ๋ฐ๋*/
WHERE c0.mall_code = c1.mall_code /*๋งค์ฅ*/
AND c0.date = c1.date /*๋ ์ง*/
AND c0.sto_code = c1.sto_code /*์ ํฌ*/
AND c0.slip_num = c1.slip_num /*์ ํ๋ฒํธ*/
AND c1.mall_code = '1234'
AND c1.sto_code = '1'
AND SUBSTRING(c1.date, 1, 6) = '202408' /*๋
์*/) B
๊ฒฐ๊ณผ

์์ ๊ฐ์ด ๋ํ๋๋ ๊ฑธ ํ์ธํ ์ ์๋ค. (์๊ฐ ์ผ๋ณ, ์๋๊ฐ ์๋ณ)
'๐ Note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Spring] JPA + QueryDSL ์ค์ (spring 3.0์ด์) + H2 DB ์ฐ๊ฒฐ (Gradle) (0) | 2024.09.03 |
|---|---|
| ๋ฐ์ดํฐ ํ ์ด๋ธ์ ์ข ๋ฅ (2) | 2024.08.27 |
| [Oracle] ๋งค์ ์ ํ ์ ์ฅ ์ฟผ๋ฆฌ (0) | 2024.08.20 |
| [Oracle] ์ด๋ฏธ์ง ์ ๋ก๋, ์์ , ์ญ์ ์ฟผ๋ฆฌ ์์ฑํ๊ธฐ(+์ด๋ฏธ์ง ํ ์ด๋ธ ์์ฑ) (0) | 2024.08.20 |
| [Oracle] ๋งค์ถ ์กฐํ ์ฟผ๋ฆฌ ์์ฑํ๊ธฐ (0) | 2024.08.20 |