WHERE ์กฐ๊ฑด์ ์ ๋ํด ์์๋ณด๊ธฐ
์ซ์ ๋ฐ ๋ฌธ์/๋ ์งํ ๋ฐ์ดํฐ ํํฐ๋ง
ํ ์ด๋ธ๋ช ๋ค์์ WHERE๋ฅผ ์ ๊ณ ์กฐ๊ฑด์ ๊ธฐ์ฌํ๋ฉด ๋จ!
์ซ์ํ ๋ฐ์ดํฐ ์กฐ๊ฑด ์ฃผ๊ธฐ
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2 FROM ํ
์ด๋ธ๋ช
WHERE ๋น๊ตํ ์ด ์ด๋ฆ=์ซ์;
๋ฌธ์/๋ ์งํ ๋ฐ์ดํฐ ์กฐ๊ฑด ์ฃผ๊ธฐ
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2 FROM ํ
์ด๋ธ๋ช
WHERE ๋น๊ตํ ์ด ์ด๋ฆ='๋ฌธ์';
1. ๊ฐ์ ๊ธ์ก์ด 1๋ฐฑ๋ง์ ์ด์์ธ ๊ณ ๊ฐ๋ค์ ๊ณ ๊ฐ๋ฒํธ, ๊ณ์ฝ๋ฒํธ, ๊ฐ์ ๊ธ์ก์ ์ถ์ถํ๋ ค๋ฉด?
SELECT ID, CNRT_NO, CNRT_AMT
FROM INS_INFO
WHERE CNRT_AMT >= 1000000;
2. ์ํ๋ช ์ด '๋ค์ด๋ ํธ์๋์ฐจ๋ณดํ'์ธ ๊ณ ๊ฐ๋ค์ ๊ณ ๊ฐ๋ฒํธ, ๊ณ์ฝ์ผ, ์ํ๋ช ์ ์ถ์ถํ๊ณ ๊ณ ๊ฐ๋ฒํธ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด?
SELECT ID, CNRT_DT, PRDT_NM
FROM INS_INFO
WHERE PRDT_NM = '๋ค์ด๋ ํธ์๋์ฐจ๋ณดํ'
ORDER BY ID;
3. ์ํ ๊ณ์ฝ์ผ์ด 2013๋ 04์ 16์ผ ์ดํ์ธ ๊ณ ๊ฐ๋ค์ ๊ณ ๊ฐ๋ฒํธ, ๊ณ์ฝ์ผ, ์ํ๋ช ์ ์ถ์ถํ๊ณ ๊ณ ๊ฐ๋ฒํธ๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด๋ณด์
SELECT ID, CNRT_DT, PRDT_NM
FROM INS_INFO
WHERE CNRT_DT >= '20130416'
ORDER BY 1;
ORDER BY ์ ์ ๋ฌธ์ฅ์ ๋์ ์ฌ์ฉํด์ผ ํ๋ค!
=> ORDER BY์ ์ ๋ฌธ์ฅ์ ์์์ ์ฌ์ฉํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํจ
๋น๊ต/์ฐ์ ์ฐ์ฐ์
๋น๊ต์ฐ์ฐ์
SELECT ์ด ์ด๋ฆ FROM ํ
์ด๋ธ๋ช
WHERE ๋น๊ตํ ์ด ์ด๋ฆ ๋น๊ต์ฐ์ฐ์ ๋น๊ตํ ๋์;
์ฐ์ ์ฐ์ฐ์ - SELECT๋ฌธ์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2 ์ฐ์ ์ฐ์ฐ์ ์ด ์ด๋ฆ3 AS ์๋ก์ด ์ด๋ฆ FROM ํ
์ด๋ธ๋ช
;
์ฐ์ ์ฐ์ฐ์ - WHERE ์กฐ๊ฑด์ ์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
SELECT ์ด ์ด๋ฆ FROM ํ
์ด๋ธ๋ช
WHERE (์ด ์ด๋ฆ1 ์ฐ์ ์ฐ์ฐ์ ์ด ์ด๋ฆ2) ๋น๊ต์ฐ์ฐ์ ๋น๊ตํ ๋์;
1. PURCHASE_TRAN ํ ์ด๋ธ์์ ์ฌํด ๊ตฌ์ ๊ธ์ก์ด 1๋ฐฑ๋ง์ ์ด์์ธ ๊ณ ๊ฐ์ ๊ณ ๊ฐ๋ฒํธ์ ์ฌํด ๊ตฌ์ ๊ธ์ก์ ๋ํ๋ด๋ ค๋ฉด?
SELECT ID, PURCHASE_AMT
FROM PURCHASE_TRAN
WHERE PRUCHASE_AMT >= 1000000;
2. PURCHASE_TRAN ํ ์ด๋ธ์์ ์ฌํด ๊ตฌ์ ๊ฑด์๊ฐ ์๋ ๋ ๊ตฌ์ ๊ฑด์๋ณด๋ค ๋ง์ ๊ณ ๊ฐ๋ค์ ๊ณ ๊ฐ๋ฒํธ, ์ฌํด ๊ตฌ์ ๊ฑด์, ์๋ ๋ ๊ตฌ์ ๊ฑด์๋ฅผ ๋ํ๋ด๊ณ ๊ณ ๊ฐ๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ ค๋ฉด?
SELECT ID, PURCHASE_CNT, LAST_CNT
FROM PURCHASE_TRAN
WHERE PURCHASE_CNT > LAST_CNT
ORDER BY ID;
3. ์ฌํด ํ๋งค๊ฐ๊ฒฉ์ ์ ๋งค์ถ๋ง์ง์ด 10%๋ผ๊ณ ๊ฐ์ ํ์. PURCHASE_TRAN ํ ์ด๋ธ์์ ์์ด์ต์ ๋ณ์นญ์ INCOME_AMT๋ผ๊ณ ์ฌ์ฉํ์ฌ ์ฌํด ๊ณ ๊ฐ๋ณ ์์ด์ต์ ๊ตฌํ๋ ค๋ฉด?
(์ ๋งค์ถ๋ง์ง์ '์์ด์ต / ์ด ๋งค์ถ์ก')
SELECT ID, PURCHASE_AMT*0.1 AS INCOME_AMT
FROM PURCHASE_TRAN;
4. ์ฌํด ๊ณ ๊ฐ์ ๊ฑด๋น ๊ตฌ์ ๊ธ์ก์ ๊ตฌํ๊ณ , ๋ณ์นญ์ TICKET_SIZE๋ก ์ค์ ํ๋ ค๋ฉด?
SELECT ID, PURCHASE_AMT/PURCHASE_CNT
AS TICKET_SIZE
FROM PURCHASE_TRAN;
5. ๋ณดํ์์ฅ ํ ์ด๋ธ(INS_INFO ํ ์ด๋ธ)์์ ํด์ง๋ ๊ณ์ฝ๋ง ์ถ์ถํ์ฌ ๊ณ ๊ฐ๋ฒํธ, ๊ณ์ฝ๋ฒํธ ๋ฐ ๊ฐ์ ๊ธ์ก์ ์ถ๋ ฅํ๋ ค๋ฉด?
SELECT ID, CNRT_NO, CNRT_AMT
FROM INS_INFO
WHERE CNCL_DT IS NOT NULL;
1. ์ฐ์ ์ฐ์ฐ์์ ๊ณฑํ๊ธฐ, ๋๋๊ธฐ๋ ๋ํ๊ธฐ, ๋นผ๊ธฐ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๋ค
2. NULL๊ฐ์ธ ํ์ ์ฐพ์ ๋๋ IS NULL, NULL๊ฐ์ด ์๋ ํ์ ์ฐพ์ ๋๋ IS NOT NULL์ ์ฌ์ฉํ๋ค
(์ด๋ NULL์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, SPACE ํน์ ์ซ์ 0๊ณผ๋ ๋ค๋ฅธ ๊ฐ๋ )
=> NULL์ ์ฌ์ฉํ ๋๋ ์ฐ์ฐ์ '='์ ์ฌ์ฉํ ์ ์๋ค!
3. NULL๊ฐ์ ์ค๋ฆ์ฐจ์ ํน์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ ์ ๊ฐ์ฅ ํฐ ๊ฐ์ผ๋ก ๋ถ๋ฅ๋๋ค
NULL๊ฐ์ ์ฒ๋ฆฌ
COALESCE ํจ์์ ๋ฌธ๋ฒ
COALESCE(EXPRESSION 1, EXPRESSION 2, ..., EXPRESSION N)
EXPRESSION 1์ด NULL๊ฐ์ด ์๋๋ฉด EXPRESSION 1์ ๋ฆฌํดํ๊ณ , EXPRESSION 1์ด NULL๊ฐ์ด๊ณ EXPRESSION2๊ฐ NULL ๊ฐ์ด ์๋๋ฉด EXPRESSION 2๋ฅผ ์ถ๋ ฅํ๊ฒ ๋๋ค!
COALESCE ํจ์๋ NULL๊ฐ์ 0์ผ๋ก ์นํํ ๋ ๋ง์ด ์ฌ์ฉํ๋ค
=> NULL๊ฐ์ด ํฌํจ๋ ์ฌ์น์ฐ์ฐ์ ํ ๋ ๊ฒฐ๊ณผ๊ฐ์ NULL๊ฐ์ด๋ค ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฒฐ์ธก์น ์ฒ๋ฆฌ(Missing value imputation)๋ผ๋ ์์ ์ ํด์ผ ํ๋ค
(NULL๊ฐ์ ๋ค๋ฅธ ๊ฐ์ผ๋ก ์นํํ ๋๋ COALESCE ํจ์๊ฐ ๋ง์ด ์ฌ์ฉ๋จ)
ex. COALESCE(NULL, NULL, 'C') -> 'C'
(NULL ๊ฐ์ ์ ์ธํ ๊ฐ์ฅ ์ผ์ชฝ์ ๋จ๋ ๊ฐ)
DBMS๋ง๋ค ์ง์ ์ฌ๋ถ์ ์ฐจ์ด๊ฐ ์์ง๋ง NULL๊ฐ์ ์ฒ๋ฆฌํ ์ ์๋ ํจ์๋
1. ZEROIFNULL(์ด ์ด๋ฆ) : ํด๋น ์ด์ NULL๊ฐ์ด ํฌํจ๋๋ฉด ์ซ์ 0์ผ๋ก ๋ฐ๊พธ๋ ํจ์
2. NVL2(์ด ์ด๋ฆ, ํํ์1, ํํ์2) : ํด๋น ์ด์ด NULL์ด๋ฉด 'ํํ์ 2'์ ๊ฐ์ ๋ํ๋ด๊ณ NULL์ด ์๋๋ฉด 'ํํ์1'์ ๊ฐ์ ๋ํ๋ธ๋ค
๊ฐ ์๋ค
'๐ซง Database > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ ์คํธ ๋ง์ด๋์ ํ์ฉํ ๋ฐ์ดํฐ ์กฐ๊ฑด ์ฃผ๊ธฐ (1) | 2024.02.26 |
---|---|
๋ ผ๋ฆฌ์ฐ์ฐ์๋ฅผ ํ์ฉํ ๋ฐ์ดํฐ ์กฐ๊ฑด ์ฃผ๊ธฐ (0) | 2024.02.25 |
SELECT๋ฌธ์ ์ถ๊ฐ์ ์ผ๋ก ํ์ํ ํค์๋ (0) | 2024.02.22 |
SQL์ ๊ธฐ์ด (0) | 2024.02.21 |
SQL์ ๊ฐ์ (0) | 2024.02.21 |