์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์นํผ๋ธ๋ฆฌ์ฑ
- html
- ์ฅํธ์์ค
- ํ์ด์ฌ
- ๋ผํ๋ผ์ค์๋ง๋
- K๋ฐฐํฐ๋ฆฌ
- ์ํ
- ๊ฐ๋ฐ
- ์ฝ๋ฉ
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- ComputerScience
- ๋ ์
- ์๋ฐ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ๋ก๊ทธ๋๋ฐ
- JavaScript
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- ๊นํ๋จ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- ๊น๋ฏธ๊ฒฝ
- ์ค๋ผํด
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ๋ฐ์ํ
- database
- ์ปดํจํฐ๊ณผํ
- ์ฑ
- Java
- css
- Python
- Today
- Total
JiYoung Dev ๐ฅ
[Oracle Database] ROWNUM, TOP-N, ํ์ด์ง ๊ธฐ์ , ์๋ธ์ฟผ๋ฆฌ (2023.03.28~29) ๋ณธ๋ฌธ
[Oracle Database] ROWNUM, TOP-N, ํ์ด์ง ๊ธฐ์ , ์๋ธ์ฟผ๋ฆฌ (2023.03.28~29)
Shinjio 2023. 3. 28. 14:08๐ ROWNUM
ํ ์ด๋ธ์ ํํ(ํ)์ ์์๋ก ๋ถ์ฌ๋๋ ์ผ๋ จ๋ฒํธ
์ค์ ํ ์ด๋ธ์๋ ์์ง๋ง ํน์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ปฌ๋ผ์ ๊ฐ์ง์ปฌ๋ผ(์์ฌ์ปฌ๋ผ)์ด๋ผ๊ณ ํจ
์: ROWNUM, ROWID
ROWNUM์ ๋ณดํต WHERE์ ์ ์ฌ์ฉ
WHERE์ ์ ์ฌ์ฉํ๋ฉด ์ถ๋ ฅ๋๋ ํํ(ํ)์ ๊ฐ์๋ฅผ ์ ํํ ์ ์์
์ฌ์ฉ์ ์ฃผ์์ฌํญ
ROWNUM์ 1์ ๊ฐ์ ๋จผ์ ์ฌ์ฉํด์ผ 2์ ๊ฐ์ ์ฌ์ฉํ ์ ์์
ROWNUM = 2์ธ ๋์์ ๋ฝ์ผ๋ ค๋ฉด? ์ธ๋ผ์ธ๋ทฐ ์ฌ์ฉ
์ธ๋ผ์ธ๋ทฐ๋ฅผ ํ์ฉํ์ฌ ROWNUM๋ ์ง์ ํ ์ด๋ธ์ ์ปฌ๋ผ์ธ ๊ฒ์ฒ๋ผ ๊ฐ๊ณตํด ์ฌ์ฉํ๋ ์๋ฆฌ
๐ TOP-N
์์์์ N๊ฐ ๋ฝ๊ธฐ
ROWNUM ๊ฐ๋ ๊ณผ ์ธ๋ผ์ธ๋ทฐ ๊ฐ๋ ์ ์กฐํฉํ์ฌ ์์ N๊ฐ์ ๋ฐ์ดํฐ๋ง ๋ฝ๋ ๊ธฐ์ ์ ์ฌ์ฉํ ์ ์์
โผ ์ง์๋ค์ ์ฐ๋ด์ด ๋์ ์์๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌ ํ ์์ 5๋ช ๋ง ์ถ๋ ฅ โผ
1. ์ง์ ํ ์ด๋ธ์ ์ฐ๋ด์ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
2. ์์์ ์๋ก ์ ๋ ฌํ ํ ์ด๋ธ์ ์ธ๋ผ์ธ๋ทฐ๋ก ์ฌ์ฉํ๊ณ , WHERE ์กฐ๊ฑด์ ROWNUM ํ์ฉํ์ฌ 5๊ฐ๋ง ์ถ๋ ฅ
๐ ํ์ด์ง ๊ธฐ์
ํ์ด์ง์ด๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ธ์ฉ ๋ณด์ฌ์ฃผ๋ ๊ธฐ์ (ํ์ด์ง๋ง๋ค ์ ํด์ง ๊ฐ์์ ๊ฒ์๊ธ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ)
ROWNUM๊ณผ TOP-N ๊ธฐ์ ๋ก ๊ตฌํ ๊ฐ๋ฅ
โผ ๊ฒ์ํ ํ ์ด๋ธ์์ ๊ฐ์ฅ ์ต๊ทผ์ ๊ฒ์๋ ๊ฒ์๋ฌผ 40๊ฐ๋ฅผ ๋ฝ์ ํ ๊ทธ ์ค์์ 21๋ฒ์งธ๋ถํฐ ๋ฝ๊ธฐ โผ
1) ๊ฐ์ฅ ์ต๊ทผ์ ๊ฒ์๋ ๊ฒ์๋ฌผ 40๊ฐ ๋จผ์ ๋ฝ๊ธฐ (TOP-N)
2) 21๋ฒ์งธ๋ถํฐ ๋ฝ๊ธฐ ์ํด์๋ 1)์ ์กฐํ ๋ฐ์ดํฐ์ ROWNUM์ ์ถ๊ฐํ์ฌ ์ธ๋ผ์ธ์ฟผ๋ฆฌ๋ก ์ฌ์ฉ
3) WHERE ์กฐ๊ฑด์ผ๋ก 21์ด์
ํ์ด์ง ๊ธฐ์ ์์ฑ๋ฒ
๐ ์๋ธ์ฟผ๋ฆฌ(SUB QUERY)
์์ฑ๋ ์ฟผ๋ฆฌ ๋ด๋ถ์ ๋ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์ฝ์ (์ค๋ฌด์์ 200% ์ฌ์ฉ๋๋ ๊ธฐ์ )
๋ฐ์ ์๋ ์ฟผ๋ฆฌ๋ ๋ฉ์ธ ์ฟผ๋ฆฌ๋ผ ํจ
๐ ์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ(scala subquery)
SELECT์์ ์ฌ์ฉ๋๋ ์๋ธ์ฟผ๋ฆฌ
์ค์นผ๋ผ๋ 'ํ๋์'๋ผ๋ ๋ป์ผ๋ก ํ๋์ ์ปฌ๋ผ์ ๋ํด ํ๋์ ํ๋ง ๋ฐํํ๋ ํน์ง์ ๊ฐ์ง
์ถ๋ ฅ๋๋ ํ๋์ ๊ฐ์ด ์๋ค๋ฉด NULL์ ๋ฐํ
โ ์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ ์คํ ์๋ฆฌ
๋ฉ์ธ์ฟผ๋ฆฌ์์ ์ถ๋ ฅ๋๋ ํํ์ ์๋งํผ SELECT์ ์๋ ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ฐ๋ณต ์คํ
์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ๋ ์์ฐํฐ ์กฐ์ธ์ผ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
์กฐ์ธ ๋ฐฉ์ ์ฌ์ฉ์ ์ถ์ฒํ์ง๋ง, ์ค์นผ๋ผ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ์ฝ์ ์ ์์ด์ผ ํจ
์์ฐํฐ ์กฐ์ธ ์ฐ๋ ์ด์
โ ์ฑ๋ฅ
โก ์ค์นผ๋ผ์๋ธ์ฟผ๋ฆฌ์์๋ ์ค๋ก์ง ํ๋์ ์ปฌ๋ผ, ํ๋์ ํ๋ง ๊ฐ์ ธ์ฌ ์ ์์
์ฃผ์ ์ฌํญ
์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ๋ก ์ถ๋ ฅ๋๋ ํ(ํํ)์ 1๊ฐ ํน์ NULL ์ด์ด์ผ ํจ
์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ๋ก ์ถ๋ ฅ๋๋ ์ปฌ๋ผ์ 1๊ฐ์ฌ์ผ ํจ
์ค์นผ๋ผ์๋ธ์ฟผ๋ฆฌ ์ฐ๋ ์ด์
์กฐ์ธ์ ์ค์ผ ์ ์์
โผ ์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ ๋ฌธ์
๐ ์ธ๋ผ์ธ๋ทฐ(INLINE VIEW)
FROM ๋ถ๋ถ์์ ์ฌ์ฉ๋๋ ์๋ธ์ฟผ๋ฆฌ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด ๋ง์น ๊ฐ์์ ํ ์ด๋ธ์ธ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์์
์์ธ๋ด์ฉ ์๋ ๋งํฌ ์ฐธ์กฐ
๐ ์ค์ฒฉ ์๋ธ์ฟผ๋ฆฌ (nested sub query)
์ฃผ๋ก WHERE์์ ์ฐ์ (์ฌ์ฉ : WHERE, HAVING)
๋ฉ์ธ์ฟผ๋ฆฌ์ ๊ด๊ณ๊ฐ ์๋์ง์ ๋ฐ๋ผ ์๊ด ์๋ธ์ฟผ๋ฆฌ์ ๋น์๊ด ์๋ธ์ฟผ๋ฆฌ๋ก ๋๋จ
โ ๋น์๊ด ์๋ธ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ์์ ๋ฉ์ธ์ฟผ๋ฆฌ์ ์ปฌ๋ผ์ ์ฌ์ฉํ์ง ์๋ ์๋ธ์ฟผ๋ฆฌ (๋ฉ์ธ์ฟผ๋ฆฌ์ ์ฐ๊ดX)
์๋ธ์ฟผ๋ฆฌ๊ฐ ๋จผ์ ์คํ๋๊ณ ๋ฉ์ธ ์ฟผ๋ฆฌ๊ฐ ์คํ
โ ์๊ด ์๋ธ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ์์ ๋ฉ์ธ์ฟผ๋ฆฌ์ ์ปฌ๋ผ์ ์ฌ์ฉํ๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์๋ฏธํจ (๋ฉ์ธ์ฟผ๋ฆฌ์ ์ฐ๊ด O)
๋ฉ์ธ์ฟผ๋ฆฌ์์ ์ถ๋ ฅ๋๋ ํํ(ํ) ์๋งํผ ์๋ธ์ฟผ๋ฆฌ๊ฐ ์คํ๋๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋์ ํด ๋ฉ์ธ์ฟผ๋ฆฌ๋ฅผ ์คํ
1) ๋ฉ์ธ์ฟผ๋ฆฌ์์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ ์ธํ ์กฐ๊ฑด์ ๋ถํฉํ๋ ํํ ์๋งํผ ์ฟผ๋ฆฌ๋ฅผ ์คํ
2) ์๋ธ์ฟผ๋ฆฌ์ ์๋ ๋ฉ์ธ์ฟผ๋ฆฌ ์ปฌ๋ผ์ ์ฐจ๋ก๋๋ก ๊ฐ์ ์ ๋ ฅ
โผ ์๊ด ์ฟผ๋ฆฌ, ๋น์๊ด ์ฟผ๋ฆฌ ๋ฌธ์
๐ ๋จ์ผํ/๋ค์คํ ์ฐ์ฐ์
๋จ์ผํ ์ฐ์ฐ์ : = , >= , < , != (๋น๊ต์ฐ์ฐ์)
๋ค์คํ ์ฐ์ฐ์ : IN, EXISTS, NOT EXISTS, ANY, ALL ๋ฑ
IN : ์ ๋ ฅ๋ ๋ค์คํ ์ค์์ ์ผ์นํ๋ ๊ฐ๋ค์ ๋ชจ๋ ์ถ๋ ฅ
ANY : ์ ๋ ฅ๋ ๋ค์คํ ์ค์์ ํ๋๋ผ๋ ์ผ์นํ๋ฉด ์ถ๋ ฅ
ALL : ์ ๋ ฅ๋ ๋ค์คํ ์ค์์ ๋ชจ๋ ์ผ์นํด์ผ ์ถ๋ ฅ
'full stack > database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[database ๊ณ ๊ธ] case๋ฌธ (2023.08.08) (0) | 2023.08.08 |
---|---|
[database ๊ณ ๊ธ] EXISTS (2023.08.07) (0) | 2023.08.07 |
[Oracle Database] TCL, DCL (2023.03.27) (0) | 2023.03.27 |
[Oracle Database] DDL - DROP, ์ํ์ค์ ๋ทฐ (2023.03.27) (0) | 2023.03.27 |
[Oracle Database] ๋ถ์ ์ฐ์ฐ, NULL, IN, BETWEEN, LIKE (2023.03.21) (0) | 2023.03.24 |