๋ฐ˜์‘ํ˜•

ํ•˜์œ„ ์ฟผ๋ฆฌ์˜ ์ดํ•ด

 

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;

 

CARD_ACCT ํ…Œ์ด๋ธ”

 

CUST_PARTY ํ…Œ์ด๋ธ”

 

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 ์กฐ๊ฑด์ ˆ);

 

CARD_ACCT ํ…Œ์ด๋ธ”

 

CUST_PARTY ํ…Œ์ด๋ธ”

 

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'));
     ๊ณผ ๊ฐ™์€ ๋ณต์ˆ˜ ํ–‰์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค
๋ฐ˜์‘ํ˜•