ํ์ ์ฟผ๋ฆฌ์ ์ดํด
FROM์ ์ ํ์ ์ฟผ๋ฆฌ
1. ์กฐ๊ฑด์ ๋ง๋ ๋์์ ์ ์ ํ ์์ฝํ ๋
์ด ๋ฐฉ๋ฒ์ ์กฐ๊ฑด์ ๋ง๋ ๋์์๋ฅผ ์ ์ ํ ํ ๋ฐ์ดํฐ๋ฅผ ์์ฝํ ๋ ๋ง์ด ์ฌ์ฉ๋๋ค
=> ํ ์ด๋ธ ๋ณ์นญ์ ์ฃผ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ํ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ํ ํ ์ด๋ธ ๋ณ์นญ์ ๊ผญ ์ฃผ์ด์ผ ํ๋ค
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2
FROM (SELECT *
FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด์ ) (AS) ๋ณ์นญ
WHERE ์กฐ๊ฑด์ ;
2. ํ ์ด๋ธ ์กฐ์ธ์ ํ ๋
ํ ์ด๋ธ ์กฐ์ธ์ ํ ๋ ํ์ํ ์ ๋ณด๋ง ์กฐ์ธํ ์ ์๋๋ก ๊ณ ์๋ ๋ฐฉ๋ฒ์ด๋ค
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 (AS) ๋ณ์นญ1 LEFT OUTER JOIN
(SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
2
WHERE ์กฐ๊ฑด์ ) (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;


1. CARD_ACCT ํ ์ด๋ธ๊ณผ CUST_PARTY ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ํ์ฌ ์ด์์๋ ์ ์ฉ์นด๋ ๋ณด์ ๊ณ ๊ฐ๊ณผ ๋ฏธ๋ณด์ ๊ณ ๊ฐ์ ์๋ฅผ ๋ํ๋ด๋ ค๋ฉด?
SELECT CASE WHEN TMP2.SSN IS NOT NULL THEN 'O' ELSE 'X' END AS CC_HOLDER,
SUM(CASE WHEN TMP2.SSN IS NOT NULL THEN 1 ELSE 0 END) AS SNT
FROM CUST_PARTY TMP1
LEFT OUTER JOIN (SELECT DISTINCT SSN
FROM CARD_ACCT
WHERE CLOSE_DT IS NULL
AND CC_GRADE IN ('1','2')) TMP2
ON TMP1.SSN = TMP2.SSN
GROUP BY 1;
1. ๋ฐ์ดํฐ ๋ถ์ ์ ํค๊ฐ์ด ๋๋ ์ด๋ค์ ์ค๋ณต ์์ด ๋์ดํ๊ณ , ์ข ๋ ์์ธํ ๋ถ์ํ๋ ค๋ ๋์์ ์์ผ๋ก ๋ถ์ด๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค
2. ์ค๋ณต์ ์ ๊ฑฐํ ํํ์ ํ ์ด๋ธ์ ๋ง๋ ํ ์กฐ์ธํด์ผ ํ๋ค
=> ์ค๋ณต์ ์ ๊ฑฐํ์ง ์๊ณ ํ ์ด๋ธ์ ์กฐ์ธํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ๋์์ง
WHERE ์กฐ๊ฑด์ ์ ํ์ ์ฟผ๋ฆฌ
1. IN์ ์ฌ์ฉํ WHERE ์กฐ๊ฑด์ ์ ํ์ ์ฟผ๋ฆฌ
์ด ์ด๋ฆ ๋ค์ IN์ ์ฌ์ฉํ์ฌ ํ์ํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค
=> ๋จ์ผ ๊ฒฐ๊ณผ๊ฐ์ผ ๋๋ '='๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง IN ์ฐ์ฐ์๊ฐ ํฌ๊ด์ ๊ธฐ๋ฅ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ์ด๋ฆ ๋ค์์ IN์ ์ฌ์ฉํ๋ค๊ณ ์ธ์๋๋ฉด ํธํจ
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1
WHERE ์ด ์ด๋ฆ IN (SELECT ์ด ์ด๋ฆ FROM ํ
์ด๋ธ๋ช
2 WHERE ์กฐ๊ฑด์ );


1. CARD_ACCT ํ ์ด๋ธ๊ณผ CUST_PARTY ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ํ์ฌ ์ด์์๋ ์ ์ฉ์นด๋ ๋ณด์ ๊ณ ๊ฐ์ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ด๋ฆ, ์์ด๋, ์ํ๋ฒํธ ๋ฐ ํด๋ํฐ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ค๋ฉด?
SELECT *
FROM CUST_PARTY
WHERE SSN IN (SELECT DISTINCT SSN
FROM CARD_ACCT
WHERE CLOSE_DT IS NULL
AND CC_GRADE IN('1', '2'));
๋จ์ผ ํ์์ ํ์ ์ฟผ๋ฆฌ๋ IN ๋์ '='๋ฅผ ์ฌ์ฉํ ์ ์๋ค
=> WHERE SSN = (SELECT DISTINCT SSN FROM CARD_ACCT WHERE SSN IN ('31414', '12362'));
๊ณผ ๊ฐ์ ๋ณต์ ํ์์๋ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค
'๐ซง Database > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ๋ฐ ํ ์ด๋ธ ์กฐ์ (0) | 2024.02.29 |
---|---|
ํ ์ด๋ธ ํฉ์น๊ธฐ (1) | 2024.02.29 |
๋ฐ์ดํฐ์ ๊ทธ๋ฃนํ, ํํฐ๋ง (1) | 2024.02.27 |
SQL ํจ์ ํ์ฉํ๊ธฐ (0) | 2024.02.26 |
SQL ๊ธฐ๋ณธ ํจ์ ๋ฐฐ์ฐ๊ธฐ (2) | 2024.02.26 |
ํ์ ์ฟผ๋ฆฌ์ ์ดํด
FROM์ ์ ํ์ ์ฟผ๋ฆฌ
1. ์กฐ๊ฑด์ ๋ง๋ ๋์์ ์ ์ ํ ์์ฝํ ๋
์ด ๋ฐฉ๋ฒ์ ์กฐ๊ฑด์ ๋ง๋ ๋์์๋ฅผ ์ ์ ํ ํ ๋ฐ์ดํฐ๋ฅผ ์์ฝํ ๋ ๋ง์ด ์ฌ์ฉ๋๋ค
=> ํ ์ด๋ธ ๋ณ์นญ์ ์ฃผ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ํ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ํ ํ ์ด๋ธ ๋ณ์นญ์ ๊ผญ ์ฃผ์ด์ผ ํ๋ค
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2
FROM (SELECT *
FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด์ ) (AS) ๋ณ์นญ
WHERE ์กฐ๊ฑด์ ;
2. ํ ์ด๋ธ ์กฐ์ธ์ ํ ๋
ํ ์ด๋ธ ์กฐ์ธ์ ํ ๋ ํ์ํ ์ ๋ณด๋ง ์กฐ์ธํ ์ ์๋๋ก ๊ณ ์๋ ๋ฐฉ๋ฒ์ด๋ค
SELECT ๋ณ์นญ1.์ด ์ด๋ฆ1, ๋ณ์นญ2.์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1 (AS) ๋ณ์นญ1 LEFT OUTER JOIN
(SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
2
WHERE ์กฐ๊ฑด์ ) (AS) ๋ณ์นญ2
ON ๋ณ์นญ1.KEY=๋ณ์นญ2.KEY;


1. CARD_ACCT ํ ์ด๋ธ๊ณผ CUST_PARTY ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ํ์ฌ ์ด์์๋ ์ ์ฉ์นด๋ ๋ณด์ ๊ณ ๊ฐ๊ณผ ๋ฏธ๋ณด์ ๊ณ ๊ฐ์ ์๋ฅผ ๋ํ๋ด๋ ค๋ฉด?
SELECT CASE WHEN TMP2.SSN IS NOT NULL THEN 'O' ELSE 'X' END AS CC_HOLDER,
SUM(CASE WHEN TMP2.SSN IS NOT NULL THEN 1 ELSE 0 END) AS SNT
FROM CUST_PARTY TMP1
LEFT OUTER JOIN (SELECT DISTINCT SSN
FROM CARD_ACCT
WHERE CLOSE_DT IS NULL
AND CC_GRADE IN ('1','2')) TMP2
ON TMP1.SSN = TMP2.SSN
GROUP BY 1;
1. ๋ฐ์ดํฐ ๋ถ์ ์ ํค๊ฐ์ด ๋๋ ์ด๋ค์ ์ค๋ณต ์์ด ๋์ดํ๊ณ , ์ข ๋ ์์ธํ ๋ถ์ํ๋ ค๋ ๋์์ ์์ผ๋ก ๋ถ์ด๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค
2. ์ค๋ณต์ ์ ๊ฑฐํ ํํ์ ํ ์ด๋ธ์ ๋ง๋ ํ ์กฐ์ธํด์ผ ํ๋ค
=> ์ค๋ณต์ ์ ๊ฑฐํ์ง ์๊ณ ํ ์ด๋ธ์ ์กฐ์ธํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ๋์์ง
WHERE ์กฐ๊ฑด์ ์ ํ์ ์ฟผ๋ฆฌ
1. IN์ ์ฌ์ฉํ WHERE ์กฐ๊ฑด์ ์ ํ์ ์ฟผ๋ฆฌ
์ด ์ด๋ฆ ๋ค์ IN์ ์ฌ์ฉํ์ฌ ํ์ํ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค
=> ๋จ์ผ ๊ฒฐ๊ณผ๊ฐ์ผ ๋๋ '='๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง IN ์ฐ์ฐ์๊ฐ ํฌ๊ด์ ๊ธฐ๋ฅ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ์ด๋ฆ ๋ค์์ IN์ ์ฌ์ฉํ๋ค๊ณ ์ธ์๋๋ฉด ํธํจ
SELECT ์ด ์ด๋ฆ1, ์ด ์ด๋ฆ2
FROM ํ
์ด๋ธ๋ช
1
WHERE ์ด ์ด๋ฆ IN (SELECT ์ด ์ด๋ฆ FROM ํ
์ด๋ธ๋ช
2 WHERE ์กฐ๊ฑด์ );


1. CARD_ACCT ํ ์ด๋ธ๊ณผ CUST_PARTY ํ ์ด๋ธ์ ์ด์ฉํ์ฌ ํ์ฌ ์ด์์๋ ์ ์ฉ์นด๋ ๋ณด์ ๊ณ ๊ฐ์ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ์ด๋ฆ, ์์ด๋, ์ํ๋ฒํธ ๋ฐ ํด๋ํฐ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ค๋ฉด?
SELECT *
FROM CUST_PARTY
WHERE SSN IN (SELECT DISTINCT SSN
FROM CARD_ACCT
WHERE CLOSE_DT IS NULL
AND CC_GRADE IN('1', '2'));
๋จ์ผ ํ์์ ํ์ ์ฟผ๋ฆฌ๋ IN ๋์ '='๋ฅผ ์ฌ์ฉํ ์ ์๋ค
=> WHERE SSN = (SELECT DISTINCT SSN FROM CARD_ACCT WHERE SSN IN ('31414', '12362'));
๊ณผ ๊ฐ์ ๋ณต์ ํ์์๋ ์๋ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค
'๐ซง Database > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ ๋ฐ ํ ์ด๋ธ ์กฐ์ (0) | 2024.02.29 |
---|---|
ํ ์ด๋ธ ํฉ์น๊ธฐ (1) | 2024.02.29 |
๋ฐ์ดํฐ์ ๊ทธ๋ฃนํ, ํํฐ๋ง (1) | 2024.02.27 |
SQL ํจ์ ํ์ฉํ๊ธฐ (0) | 2024.02.26 |
SQL ๊ธฐ๋ณธ ํจ์ ๋ฐฐ์ฐ๊ธฐ (2) | 2024.02.26 |