๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL, WIL/TIL๐Ÿ“˜

04. 24. TIL : Decode(), With(), ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค

728x90

1. Decode()

- decode ํ•จ์ˆ˜๋Š” CASE-WHEN ๊ตฌ๋ฌธ์˜ ์—ญํ• ๊ณผ ๊ฐ™์ด if else ๊ตฌ๋ฌธ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ๋ฌธ์ด๋‹ค(ํ‘œ์ค€ SQL์€ CASE)

https://gent.tistory.com/227

- ๋งˆ์ง€๋ง‰ else๋Š” ๋น„์–ด์žˆ์–ด๋„ ์ƒ๊ด€์—†๋‹ค. Null๋กœ ํ‘œ์‹œ๋จ

- NVL2์™€ ๊ฐ™์ด Null ์ฒดํฌ ๊ฐ€๋Šฅ

- Decode ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋˜ ๋‹ค๋ฅธ Decode ํ•จ์ˆ˜ ์‚ฌ์šฉ๊ฐ€๋Šฅ

2. With()

์ฐธ๊ณ  : https://heodolf.tistory.com/71

: ์ฒ˜์Œ ๋ณด๋Š” ๊ตฌ๋ฌธ์œผ๋กœ, ํ•™์Šต์ด ๋” ํ•„์š”ํ•˜๋‹ค

- ์ด๋ฆ„์„ ๊ฐ€์ง„ SubQuery, ๊ฐ€๋…์„ฑ์„ ๋†’ํž ์ˆ˜ ์žˆ๊ณ , ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

- ๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค

 

๊ธฐ๋ณธ ๊ตฌ์กฐ

ex)

WITH PR_ORDER AS (
        SELECT
        ROW_NUMBER() OVER(ORDER BY A.REG_DT) as PR_NUM, A.*
        FROM TL_DCT_ACTDOC_PRCS_LIST a
        WHERE a.ACTDOC_ID IN <foreach close=")" collection="enfdocids" index="idx" item="item" open="(" separator=",">#{item}</foreach>
        and a.ACTDOC_PRCS_STTS_CD in ('EPA01', 'EPA02', 'EPA11')
        using index pk_tl_dct_actdoc_prcs_list
        )

WITH [ ๋ณ„๋ช…1 ] [ (์ปฌ๋Ÿผ๋ช…1 [,์ปฌ๋Ÿผ๋ช…2]) ] AS (SUB QUERY)[, ๋ณ„๋ช…2 AS ... ]
MAIN QUERY

~ with ๋ณ„๋ช… (์ปฌ๋Ÿผ๋ช…) as (์„œ๋ธŒ์ฟผ๋ฆฌ) : ์ปฌ๋Ÿผ๋ช…์€ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค

- ๋จผ์ € ์ƒ์„ฑํ•œ ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค(๋ณ„๋ช… 2์—์„œ ๋ณ„๋ช… 1์„ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค)

 

๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค( + Connect By)

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค

2์˜ ์˜ˆ์‹œ์—์„œ using index pk_tl_dct_actdoc_prcs_list

~ ๊ธฐ์กด ํ…Œ์ด๋ธ”์— ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•œ ๊ฒฐ๊ณผ ์†๋„์˜ ์ฐจ์ด๊ฐ€ ๋งค์šฐ ํฌ๊ฒŒ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

์ธ๋ฑ์Šค ์‚ฌ์šฉ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์ฟผ๋ฆฌ ์†๋„๊ฐ€ ๋งค์šฐ ํฌ๊ฒŒ ์ฐจ์ด๋‚˜๋Š” ์ ์„ ๋ˆˆ์œผ๋กœ ํ™•์ธํ–ˆ์œผ๋ฉฐ, ์ด์— ๋Œ€ํ•œ ๋ฐ˜๋ก ์ธ ํ…Œ์ด๋ธ”์˜ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ด์•ผ๊ธฐ์— ๋Œ€ํ•ด ์„ค๋“๋ ฅ์„ ๋”์šฑ ๋Š๋ผ์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์š”์ฆ˜ ์„ธ์ƒ์— ์ธ๋ฑ์Šค ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์— ์ง€์žฅ์„ ๋ฐ›์œผ๋ ค๋ฉด ์–ผ๋งˆ๋‚˜ ์ž‘์€ DB๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฑด๊ฐ€~!

 

728x90