Dev.Op
Yollow ๐Ÿ“š
Dev.Op
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (701)
    • ์œ ์ตํ•˜์…จ๋‹ค๋ฉด ๊ด‘๊ณ  ํ•œ๋ฒˆ๋งŒ ํด๋ฆญ ๋ถ€ํƒ๋“œ๋ฆด๊ฒŒ์š”~ (0)
    • ---------------------------.. (0)
    • Stock (1)
      • ์Šˆํผ๋งˆ์ดํฌ๋กœ์ปดํ“จํ„ฐ (2)
    • ๐Ÿง์ „๊ธฐ์ฐจ (72)
      • ๐Ÿ„lg์—๋„ˆ์ง€์†”๋ฃจ์…˜ (0)
      • ๐ŸŠํ˜„๋Œ€์ž๋™์ฐจ (0)
    • ๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด (243)
      • ๐Ÿ’ปpython (85)
      • โž•C & C++ (1)
      • โ˜•๏ธTableau (32)
      • ๐Ÿ‘‹SQL & MySQL (20)
      • ๐ŸฌHTML & CSS (14)
      • ๐Ÿ“—JavaScript (31)
      • ๐Ÿ“˜Pspice & Excel (2)
      • ๐Ÿ“•Matlab & COMSOL & CATIA (6)
      • ๐Ÿ“™java & Servlete & JSP (29)
      • ๐Ÿ““Raspberry PI 4 (5)
      • ๐Ÿ”จAnsys (2)
      • DJango (0)
      • Flutter (3)
      • Typescript (0)
      • ๐Ÿ†Vue (5)
      • ๐Ÿ‹Docker (1)
    • ๐Ÿ“‹์ฑ„์šฉ๊ณต๊ณ  (0)
    • ๐Ÿ“WEB & ML & DL ํ”„๋กœ์ ํŠธ (27)
      • ๐ŸŒต2์ฐจ ํ”„๋กœ์ ํŠธ(LG) (9)
    • ๐Ÿงฉ์ผ์ƒ (89)
      • ๐ŸŒค์ฝ”๋”ฉ ๊ณต๋ถ€ ์ผ์ง€ (1)
      • ๐Ÿšด์ž์ „๊ฑฐ (5)
      • ๐Ÿ“ฐํ…Œํฌ (20)
      • ๐ŸฆFood & Cafe (5)
      • ๐Ÿ’‰์˜์–ด ๋„์ ์ด๊ธฐ (5)
      • โšก๋ฐœ์ „์†Œ (6)
      • ๐Ÿ“š๋…์„œ (1)
      • ๐Ÿ›ซ์—ฌํ–‰ (2)
      • ๐Ÿ“ˆ๋ธ”๋กœ๊ทธ๋งˆ์ผ€ํŒ… (6)
    • ๐ŸŒ๊ธˆ์œต (37)
    • ๐ŸŽจ์ทจ์—…End (16)
    • ๐Ÿ‘‹์ž๊ฒฉ์ฆ (150)
      • ๐Ÿ™ˆSQLD๊ฐœ๋ฐœ์ž (12)
      • ๐Ÿ”Œ์ „๊ธฐ๊ธฐ์‚ฌ (116)
      • ๐Ÿข์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (7)
      • ๐ŸŒŽADsP(๋ฐ์ดํ„ฐ๋ถ„์„์ค€์ „๋ฌธ๊ฐ€) (10)
      • ๐Ÿš™1์ข… ๋Œ€ํ˜• ์šด์ „ ๋ฉดํ—ˆ (1)
      • โญTableau Desktop Specialist (2)
    • ๐Ÿฅ‡๊ณต๋Œ€์ด๊ฑฐ์ €๊ฒƒ(๋ง‰ํ•™๊ธฐ) (24)
      • ๐Ÿ“๊ณตํ•™์ˆ˜ํ•™ 2 (1)
      • ๐Ÿบ๋งˆ์ดํฌ๋กœํ”„๋กœ์„ธ์„œ์‹ค์Šต (4)
      • ๐ŸŒCAE (10)
      • โœˆ๏ธ์ž๋™์ฐจ๊ณตํ•™์‹คํ—˜2 (0)
      • ๐Ÿšข์œ ์ฒด์—ญํ•™ (6)
      • ๐Ÿš—ํ˜„๋Œ€์ฐจ H-๋ชจ๋นŒ๋ฆฌํ‹ฐ ํด๋ž˜์Šค 1๊ธฐ (3)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    ๊ณต์ง€์‚ฌํ•ญ

    • Vue, Typescript, React, Tableau,โ‹ฏ
    • ์ง„์ธ์‚ฌ๋Œ€์ฒœ๋ช…(็›กไบบไบ‹ๅพ…ๅคฉๅ‘ฝ)

    ์ธ๊ธฐ ๊ธ€

    ํƒœ๊ทธ

    • ์—…๋น„ํŠธ
    • html
    • ์‚ผ์„ฑ์ „์ž
    • ์•„์ด์˜ค๋‹‰5
    • Python
    • ์œ ์ฒด์—ญํ•™
    • ๋น…๋ฐ์ดํ„ฐ๋ถ„์„์ค€์ „๋ฌธ๊ฐ€
    • ์ „๊ธฐ์ฐจ ๋ณด์กฐ๊ธˆ 2021
    • ์—”๋น„๋””์•„
    • ์—๋””์Šจev
    • ๋น…๋ฐ์ดํ„ฐ
    • ADsP
    • ๋ถ€๋“ฑ๋ฅ 
    • lgํ™”ํ•™
    • SMCI
    • vue btn
    • ๋ธŒ๋ฃจํŠธํฌ์Šค
    • ipad dual monitor
    • ๋””์นด๋ฅด๊ณ 
    • LG์—๋„ˆ์ง€์†”๋ฃจ์…˜
    • ์ž๋ฐ”
    • ์ „๊ธฐ์ฐจ
    • ์—”์†”
    • ๋ฐฑ์ค€
    • css
    • ํ…Œ์Šฌ๋ผ
    • fluid mechanics
    • rdfr
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ์ง๋ ฌ๋ฆฌ์•กํ„ฐ

    ์ตœ๊ทผ ๋Œ“๊ธ€

    ์ตœ๊ทผ ๊ธ€

    ํ‹ฐ์Šคํ† ๋ฆฌ

    hELLO ยท Designed By ์ •์ƒ์šฐ.
    Dev.Op

    Yollow ๐Ÿ“š

    ๐Ÿ‘‹์ž๊ฒฉ์ฆ/๐Ÿ™ˆSQLD๊ฐœ๋ฐœ์ž

    [SQL] count, groupby, subquery

    2021. 11. 7. 16:16
    ๋ฐ˜์‘ํ˜•


    ํ–‰ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ - COUNT

    COUNT๋กœ ํ–‰ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ

    SQL์€ ์ง‘ํ•ฉ์„ ๋‹ค๋ฃจ๋Š” ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๋กœ ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ๋น„ํ•ด ์ง‘๊ณ„ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๋กœ ์ง‘ํ•ฉ์„ ์ง€์ •ํ•œ๋‹ค.

    โ€‹

    ์ง‘๊ณ„ํ•จ์ˆ˜์˜ ํŠน์ง•์€ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ํ–‰์— ๋Œ€ํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ,

    ๋ณต์ˆ˜์˜ ๊ฐ’(์ง‘ํ•ฉ)์—์„œ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ณ„์‚ฐํ•ด๋‚ธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    ์ด๋ ‡๊ฒŒ ์ง‘ํ•ฉ์œผ๋กœ๋ถ€ํ„ฐ ํ•˜๋‚˜ใ…ก์ด ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์„ '์ง‘๊ณ„'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

    ๋”ฐ๋ผ์„œ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ SELECT ๊ตฌ์— ์“ฐ๋ฉด WHERE ๊ตฌ์˜ ์œ ๋ฌด์™€ ๊ด€๊ณ„์—†์ด ๊ฒฐ๊ด๊ฐ’์œผ๋กœ ํ•˜๋‚˜์˜ ํ–‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    โ€‹

    COUNT ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๋กœ ์ฃผ์–ด์ง„ ์ง‘ํ•ฉ์˜ '๊ฐœ์ˆ˜'๋ฅผ ๊ตฌํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.

     

    SELECT COUNT(*) FROM employees;

     

    SELECT ๊ตฌ๋Š” * ๊ฐ€ '๋ชจ๋“  ์—ด'์„ ์˜๋ฏธํ•˜๋Š”๋ฐ, COUNT ์ง‘๊ณ„ํ•จ์ˆ˜์—์„œ๋Š” '๋ชจ๋“  ์—ด = ํ…Œ์ด๋ธ” ์ „์ฒด'์˜ ์˜๋ฏธ์ด๋‹ค.

    โ€‹

    COUNT ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์—ด ๋ช…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์—ด ๋ช…์„ ์ง€์ •ํ•˜๋ฉด ๊ทธ ์—ด์— ํ•œํ•ด์„œ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์‹ค์ œ๋กœ ์ง‘๊ณ„ํ•จ์ˆ˜๋Š” ๋ณดํ†ต ๊ทธ ๊ฐ™์€ ๋ชฉ์ ์„ ์œ„ํ•ด ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ,

    *๋ฅผ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ง‘๊ณ„ํ•จ์ˆ˜๋Š” COUNT ํ•จ์ˆ˜๋ฟ์ด๋‹ค.

    ๋‹ค๋ฅธ ์ง‘๊ณ„ํ•จ์ˆ˜์—์„œ๋Š” ์—ด ์ด๋ฆ„์ด๋‚˜ ์‹์„ ์ธ์ˆ˜๋กœ ์ง€์ •ํ•œ๋‹ค.

    โ€‹

    ์ง‘๊ณ„ํ•จ์ˆ˜๋Š” ๋˜ํ•œ ์ง‘ํ•ฉ ์•ˆ์— NULL ๊ฐ’์ด ์žˆ์„ ๊ฒฝ์šฐ ์ด๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ฒ˜๋ฆฌํ•œ๋‹ค.

    ๋‹ค๋งŒ COUNT(*)์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ์—ด์˜ ํ–‰์ˆ˜๋ฅผ ์นด์šดํŠธํ•˜๊ธฐ ๋•Œ๋ฌธ์— NULL ๊ฐ’์ด ์žˆ์–ด๋„ ํ•ด๋‹น ๊ฐ’์ด ๋ฌด์‹œ๋˜์ง€ ์•Š๋Š”๋‹ค.

    โ€‹

     

    DISTINCT๋กœ ์ค‘๋ณต ์ œ๊ฑฐ

    DISTINCT ํ•จ์ˆ˜๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋Š” ํ•จ์ˆ˜๋กœ,

    SELECT ๊ตฌ์—์„œ DISTINCT๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•œ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    ์ค‘๋ณต ์—ฌ๋ถ€๋Š” SELECT ๊ตฌ์— ์ง€์ •๋œ ๋ชจ๋“  ์—ด์„ ๋น„๊ตํ•ด ํŒ๋‹จํ•œ๋‹ค.

    โ€‹

    ๋ฐ˜๋Œ€๋กœ SELECT ๊ตฌ์— ALL์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ค‘๋ณต ์œ ๋ฌด์™€ ๊ด€๊ณ„์—†์ด ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋ชจ๋“  ํ–‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    ๋งŒ์•ฝ SELECT ๊ตฌ์— ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์ค‘๋ณต๋œ ๊ฐ’์€ ์ œ๊ฑฐ๋˜์ง€ ์•Š๋Š”๋‹ค.

     

    โ€‹

    ์ง‘๊ณ„ํ•จ์ˆ˜์—์„œ DISTINCT

    DISTINCT๋Š” ์ง‘๊ณ„ํ•จ์ˆ˜์˜ ์ธ์ˆ˜์— ์ˆ˜์‹์ž๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ฆ‰, DISTINCT๋ฅผ ์ด์šฉํ•ด ์ง‘ํ•ฉ์—์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ๋’ค COUNT๋กœ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

     

    SELECT COUNT(DISTINCT name)
    FROM employees;

     

    ์—ฌ๊ธฐ์„œ SELECT DISTINCT COUNT(name)์ด๋ผ๋Š” SELECT ๋ช…๋ น์€

    COUNT ์ชฝ์ด ๋จผ์ € ๊ณ„์‚ฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

     

     

    COUNT ์ด์™ธ์˜ ์ง‘๊ณ„ํ•จ์ˆ˜

    SUM์œผ๋กœ ํ•ฉ๊ณ„ ๊ตฌํ•˜๊ธฐ

    SUM ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ง‘ํ•ฉ์˜ ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    SELECT SUM(quantity) # quantity๋Š” ์ˆ˜์น˜ํ˜•์—ด FROM sample51;

    SUM ์ง‘๊ณ„ํ•จ์ˆ˜์—์„œ์— ์ง€์ •๋˜๋Š” ์ง‘ํ•ฉ์€ ์ˆ˜์น˜ํ˜• ๋ฟ์ด๋‹ค.

     

    ๋ฌธ์ž์—ดํ˜•์ด๋‚˜ ๋‚ ์งœ์‹œ๊ฐ„ํ˜•์˜ ์ง‘ํ•ฉ์—์„œ ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•  ์ˆ˜๋Š” ์—†๋‹ค.

     

    ๋˜ํ•œ SUM ์ง‘๊ณ„ํ•จ์ˆ˜๋„ COUNT์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ NULL ๊ฐ’์„ ๋ฌด์‹œํ•˜์—ฌ ์ œ๊ฑฐํ•œ ๋’ค ํ•ฉ๊ณ„๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

    โ€‹

     

     

    AVG๋กœ ํ‰๊ท  ๋‚ด๊ธฐ

    AVG ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

    AVG์— ์ฃผ์–ด์ง€๋Š” ์ง‘ํ•ฉ์€ SUM๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ˆ˜์น˜ ํ˜•๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

    AVG ์ง‘๊ณ„ํ•จ์ˆ˜๋„ NULL ๊ฐ’์„ ๋ฌด์‹œํ•˜์—ฌ ์ œ๊ฑฐํ•œ ๋’ค ํ‰๊ท ๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค.

     

    ๋งŒ์•ฝ NULL์„ 0์œผ๋กœ ๊ฐ„์ฃผํ•ด์„œ ํ‰๊ท ์„ ๋‚ด๊ณ  ์‹ถ๋‹ค๋ฉด CASE ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด NULL์„ 0์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค ๊ณ„์‚ฐํ•˜๋ฉด ๋œ๋‹ค.

    # NULL์„ 0์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ AVG ํ‰๊ท ๊ฐ’ ๊ณ„์‚ฐ
    SELECT AVG (CASE WHEN quantity IS NULL THEN 0 ELSE quantity END) AS avgnull0
    FROM employees;

     

     

    MIN · MAX๋กœ ์ตœ์†Ÿ๊ฐ’ · ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ

    MIN ์ง‘๊ณ„ํ•จ์ˆ˜, MAX ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ง‘ํ•ฉ์—์„œ ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ด๋“ค์€ ๋ฌธ์ž์—ดํ˜•๊ณผ ๋‚ ์งœ์‹œ๊ฐ„ํ˜•์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๋˜ํ•œ NULL ๊ฐ’์„ ๋ฌด์‹œํ•˜๋Š” ๊ธฐ๋ณธ ๊ทœ์น™์€ ๋‹ค๋ฅธ ์ง‘๊ณ„ํ•จ์ˆ˜์™€ ๊ฐ™๋‹ค.

     

     

    ๊ทธ๋ฃนํ™” - GROUP BY

    GROUP BY๋กœ ๊ทธ๋ฃนํ™”

    GROUP BY ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ํ–‰๋ผ๋ฆฌ ํ•œ๋ฐ ๋ฌถ์–ด ๊ทธ๋ฃนํ™”ํ•œ ์ง‘ํ•ฉ์„ ์ง‘๊ณ„ํ•จ์ˆ˜๋กœ ๋„˜๊ฒจ์ค„ ์ˆ˜ ์žˆ๋‹ค.

    GROUP BY ๊ตฌ์— ์—ด์„ ์ง€์ •ํ•˜์—ฌ ๊ทธ๋ฃนํ™”ํ•˜๋ฉด ์ง€์ •๋œ ์—ด์˜ ๊ฐ’์ด ๊ฐ™์€ ํ–‰์ด ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ธ๋‹ค.

    GROUP BY๋ฅผ ์ง€์ •ํ•ด ๊ทธ๋ฃนํ™”ํ•˜๋ฉด DISTINCT์™€ ๊ฐ™์ด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค.

    GROUP BY ๊ตฌ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ง‘๊ณ„ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ„ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.

    โ€‹

     

    HAVING ๊ตฌ๋กœ ์กฐ๊ฑด ์ง€์ •

    SQL์˜ ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋Š” WHERE ๊ตฌ -> GROUP BY ๊ตฌ -> SELECT ๊ตฌ -> ORDER BY ๊ตฌ์˜ ์ˆœ์ด๋‹ค.

    ์ฆ‰, WHERE ๊ตฌ๊ฐ€ GROUP BY ๊ตฌ๋ณด๋‹ค ๋จผ์ € ์‹คํ–‰์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์—,

    ๊ทธ๋ฃนํ™”๊ฐ€ ํ•„์š”ํ•œ ์ง‘๊ณ„ํ•จ์ˆ˜๋Š” WEHRE ๊ตฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

    โ€‹

    ๋”ฐ๋ผ์„œ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฐ๊ณผ์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐ’์„ ๋”ฐ๋กœ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ ์œ„ํ•ด์„  HAVING ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

    HAVING ๊ตฌ๋Š” GROUP BY ๊ตฌ์˜ ๋’ค์— ๊ธฐ์ˆ ํ•˜๋ฉฐ WHERE ๊ตฌ์™€ ๋™์ผํ•˜๊ฒŒ ์กฐ๊ฑด์‹์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

    ๊ฒฐ๊ณผ์ ์œผ๋กœ WHERE ๊ตฌ์™€ HAVING ๊ตฌ์— ์ง€์ •๋œ ์กฐ๊ฑด์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” 2๋‹จ ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค.

     

    โ‘  WHERE๋กœ ๊ฒ€์ƒ‰ -> โ‘ก ๊ฒ€์ƒ‰ํ•œ ๋’ค ๊ทธ๋ฃนํ™” -> โ‘ข HAVING ๊ตฌ๋กœ ์กฐ๊ฑด์‹ ๋ฐ˜์˜

     

    # HAVING์„ ์‚ฌ์šฉํ•ด ๊ฒ€์ƒ‰
    SELECT name, COUNT(name)
    FROM employees
    GROUP BY name
    HAVING COUNT(name) = 1;

     

    name COUNT(name)
    B 1
    C 1

     

     

    HAVING ๊ตฌ๊ฐ€ ํฌํ•จ๋œ ๋‚ด๋ถ€ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    WHERE ๊ตฌ -> GROUP BY ๊ตฌ -> HAVING ๊ตฌ -> SELECT ๊ตฌ -> ORDER BY ๊ตฌ

    โ€‹

     

     

     

    ๋ณต์ˆ˜์—ด์˜ ๊ทธ๋ฃนํ™”

    GROUP BY๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ GROUP BY์— ์ง€์ •ํ•œ ์—ด ์ด์™ธ์˜ ์—ด์€

    ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ฑ„ SELECT ๊ตฌ์— ๊ธฐ์ˆ ํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

     

    # GROUP BY๋กœ ์ง€์ •ํ•œ name ์—ด ์ด์™ธ์˜ ์—ด ์กด์žฌ(no,quantity)
    SELECT no, name, quantity 
    FROM employees
    GROUP BY name;

     

    ๋งŒ์•ฝ GROUP BY์— ์ง€์ •ํ•œ ์—ด ์ด์™ธ์˜ ์—ด์„ SELECT ๊ตฌ์— ์ง€์ •ํ•˜๋ ค๋ฉด ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ๊ฐ™์ด ์จ์•ผ ํ•œ๋‹ค.

     

    SELECT MIN(no), name, SUM(quantity)
    FROM employees
    GROUP BY name;

     

     

    ๊ฒฐ๊ด๊ฐ’ ์ •๋ ฌ

    GROUP BY๋กœ ๊ทธ๋ฃนํ™”ํ•ด๋„ ์‹คํ–‰ ๊ฒฐ๊ณผ ์ˆœ์„œ๋ฅผ ์ •๋ ฌํ•  ์ˆ˜๋Š” ์—†๋‹ค.

    ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•˜๋ ค๋ฉด GROUP BY ๊ตฌ๋กœ ๊ทธ๋ฃนํ™”ํ•œ ๊ฒฝ์šฐ์—๋„ ORDER BY ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

    SELECT name, COUNT(name), SUM(quantity)
    FROM employees
    GROUP BY name
    ORDER BY SUM(quantity) DESC;
    name COUNT(name) SUM(quantity)
    B 1 10
    C 1 3
    A 2 3
    NULL 0 NULL

     

     

     

    ์„œ๋ธŒ์ฟผ๋ฆฌ

    DELETE์˜ WHERE ๊ตฌ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

     

    ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” SQL ๋ช…๋ น๋ฌธ ์•ˆ์— ํ•˜๋ถ€ SELECT ๋ช…๋ น์œผ๋กœ ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด ์ง€์ •ํ•œ๋‹ค.

    ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” SELECT ๊ตฌ, FROM ๊ตฌ, WHERE ๊ตฌ ๋“ฑ SELECT ๋ช…๋ น์˜ ๊ฐ ๊ตฌ๋ฅผ ๊ธฐ์ˆ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    # ์ตœ์†Ÿ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํ–‰ ์‚ญ์ œํ•˜๊ธฐ DELETE FROM sample54 WHERE a = (SELECT MIN(a) FROM sample54);

     

    ์Šค์นผ๋ผ ๊ฐ’

    ์ผ๋ฐ˜์ ์ธ ์„œ๋ธŒ์ฟผ๋ฆฌ ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    โ‘  ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํŒจํ„ด โ‘ก ๋ณต์ˆ˜์˜ ํ–‰์ด ๋ฐ˜ํ™˜๋˜์ง€๋งŒ ์—ด์€ ํ•˜๋‚˜์ธ ํŒจํ„ด

    โ‘ข ํ•˜๋‚˜์˜ ํ–‰์ด ๋ฐ˜ํ™˜๋˜์ง€๋งŒ ์—ด์ด ๋ณต์ˆ˜์ธ ํŒจํ„ด โ‘ฃ ๋ณต์ˆ˜์˜ ํ–‰, ๋ณต์ˆ˜์˜ ์—ด์ด ๋ฐ˜ํ™˜๋˜๋Š” ํŒจํ„ด

    ์ฒซ ๋ฒˆ์งธ ํŒจํ„ด์€ '๋‹จ์ผ ๊ฐ’'์œผ๋กœ๋„ ํ†ต์šฉ๋˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—…๊ณ„์—์„œ๋Š” '์Šค์นผ๋ผ ๊ฐ’'์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

    ์ฆ‰, SELECT ๋ช…๋ น์ด ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ '์Šค์นผ๋ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค'๋ผ๊ณ  ํ•œ๋‹ค.

    โ€‹

    ์Šค์นผ๋ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” SELECT ๋ช…๋ น์„ ํŠน๋ณ„ ์ทจ๊ธ‰ํ•˜๋Š” ์ด์œ ๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋กœ์จ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ํ†ต์ƒ์ ์œผ๋กœ ํŠน์ •ํ•œ ๋‘ ๊ฐ€์ง€๊ฐ€ ์„œ๋กœ ๋™์ผํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ๋น„๊ตํ•  ๋•Œ ์„œ๋กœ ๋‹จ์ผํ•œ ๊ฐ’์œผ๋กœ ๋น„๊ตํ•œ๋‹ค.

    ์ฆ‰, WHERE ๊ตฌ์—์„œ ์Šค์นผ๋ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” = ์—ฐ์‚ฐ์ž๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

    DELETE FROM sample54 WHERE a = (SELECT MIN(a) FROM sample54);

    ์—ฌ๊ธฐ์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ๋ถ€๋ถ„์€ ์Šค์นผ๋ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” SELECT ๋ช…๋ น์œผ๋กœ ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ

    = ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์—ด a์˜ ๊ฐ’๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.

    โ€‹

    ์Šค์นผ๋ผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ํŠน๋ณ„ํžˆ '์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

    '์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ'๋ผ๋ฉด WHERE ๊ตฌ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ

    ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์ง‘๊ณ„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์กฐ๊ฑด์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    โ€‹

     

     

    SELECT ๊ตฌ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

    SELECT ๊ตฌ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ง€์ •ํ•  ๋•Œ๋Š” ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

     

    SELECT (SELECT COUNT(*) FROM sample51) AS sq1,

    (SELECT COUNT(*) FROM sample54) AS sq2;

    sq1 sq2
    5 3

    sample51 ํ…Œ์ด๋ธ”์˜ ํ–‰ ๊ฐœ์ˆ˜์™€ sample54 ํ…Œ์ด๋ธ”์˜ ํ–‰ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ๊ตฌํ•œ๋‹ค.

    ์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ƒ๋ถ€์˜ SELECT ๋ช…๋ น์—๋Š” FROM ๊ตฌ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    โ€‹

    FROM ๊ตฌ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

    FROM ๊ตฌ์—์„œ๋„ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„  ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์•„๋‹ˆ์–ด๋„ ์ƒ๊ด€์ด ์—†๋‹ค.

    # FROM ๊ตฌ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ SELECT * FROM (SELECT * FROM sample54) AS sq;

    SELECT ๋ช…๋ น ์•ˆ์— SELECT ๋ช…๋ น์ด ๋“ค์–ด์žˆ๋Š” ๋“ฏ ๋ณด์ด๋Š” ์ด๋Ÿฐ ๊ตฌ์กฐ๋ฅผ

    '๋„ค์Šคํ‹ฐ๋“œ(nested) ๊ตฌ์กฐ' ๋˜๋Š” '์ค‘์ฒฉ ๊ตฌ์กฐ', '๋‚ดํฌ ๊ตฌ์กฐ'๋ผ ๋ถ€๋ฅธ๋‹ค.

    FROM ๊ตฌ์—์„œ๋Š” 'AS' ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ํ…Œ์ด๋ธ”์ด๋‚˜ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋ณ„๋ช…์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค.

    โ€‹

    INSERT ๋ช…๋ น๊ณผ ์„œ๋ธŒ์ฟผ๋ฆฌ

    INSERT ๋ช…๋ น์—๋Š” VALUES ๊ตฌ์˜ ์ผ๋ถ€๋กœ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์™€,

    VALUES ๊ตฌ ๋Œ€์‹  SELECT ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

    INSERT INTO sample541 VALUES( (SELECT COUNT(*) FROM sample51), (SELECT COUNT(*) FROM sample54) ); SELECT * FROM sample541;

    a b
    5 3

    VALUES ๊ตฌ์˜ ๊ฐ’์œผ๋กœ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ์—ฌ์•ผํ•˜๋ฉฐ, ์ž๋ฃŒํ˜•๋„ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.\

    INSERT INTO sample541 SELECT 1,2; SELECT * FROM sample541;

    a b
    5 3

    ๋‹ค์Œ์€ ํ”ํžˆ 'INSERT SELECT'๋ผ ๋ถˆ๋ฆฌ๋Š” ๋ช…๋ น์œผ๋กœ INSERT์™€ SELECT๋ฅผ ํ•ฉ์นœ ๊ฒƒ ๊ฐ™์€ ๋ช…๋ น์ด๋‹ค.

    INSERT SELECT ๋ช…๋ น์€ SELECT ๋ช…๋ น์˜ ๊ฒฐ๊ณผ๋ฅผ INSERT INTO๋กœ ์ง€์ •ํ•œ ํ…Œ์ด๋ธ”์— ์ „๋ถ€ ์ถ”๊ฐ€ํ•œ๋‹ค.

    ์ด๋•Œ SELECT ๋ช…๋ น์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด ๊ผญ ์Šค์นผ๋ผ ๊ฐ’์ผ ํ•„์š”๋Š” ์—†์œผ๋ฉฐ,

    SELECT๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ด ์ˆ˜์™€ ์ž๋ฃŒํ˜•์ด INSERTํ•  ํ…Œ์ด๋ธ”๊ณผ ์ผ์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

    ์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๋‚˜ ์ด๋™์„ ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์ด๋‹ค.

     

    ์ƒ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ

    EXISTS

    EXISTS ์ˆ ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฐ๊ด๊ฐ’์ด ์žˆ๋Š”์ง€๋ฅผ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐœ์˜ ์ƒ˜ํ”Œ ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค.

    no a
    1 NULL
    2 NULL
    3 NULL
    4 NULL
    5 NULL

    - sample551

    no 2
    3
    5

    - sample552

    โ€‹

    ์ด ๋‘ ํ…Œ์ด๋ธ”์—์„œ sample552์— no ์—ด์˜ ๊ฐ’๊ณผ ๊ฐ™์€ ํ–‰์ด ์žˆ์œผ๋ฉด '์žˆ์Œ'์œผ๋กœ,

    ํ–‰์ด ์—†์œผ๋ฉด '์—†์Œ'์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ ๊ฐฑ์‹ ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

    # EXISTS๋ฅผ ์‚ฌ์šฉํ•ด '์žˆ์Œ'์œผ๋กœ ๊ฐฑ์‹ ํ•˜๊ธฐ UPDATE sample551 SET a = '์žˆ์Œ' WHERE EXISTS(SELECT * FROM sample552 WHERE no2 = no); SELECT * FROM sample551;

    no a
    1 NULL
    2 NULL
    3 ์žˆ์Œ
    4 NULL
    5 ์žˆ์Œ

    EXISTS ์ˆ ์–ด์— ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ง€์ •ํ•˜๋ฉด ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ํ–‰์„ ๋ฐ˜ํ™˜ํ•  ๊ฒฝ์šฐ์— ์ฐธ์„ ๋Œ๋ ค์ค€๋‹ค.

    ๊ฒฐ๊ณผ๊ฐ€ ํ•œ ์ค„์ด์–ด๋„ ๊ทธ ์ด์ƒ์ด์–ด๋„ ์ฐธ์ด ๋œ๋‹ค.

    ๋ฐ˜๋ฉด ๋ฐ˜ํ™˜๋˜๋Š” ํ–‰์ด ์—†์„ ๊ฒฝ์šฐ์—๋Š” ๊ฑฐ์ง“์ด ๋œ๋‹ค.

    โ€‹

    NOT EXISTS

    ๋ฐ˜๋Œ€๋กœ, ํ–‰์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ฐธ์ด ๋˜์–ด '์—†์Œ'์ด ๋˜๋Š” NOT EXISTS ์ˆ ์–ด๋„ ์žˆ๋‹ค.

    UPDATE sample551 SET a = '์—†์Œ' WHERE NOT EXISTS(SELECT * FROM sample552 WHERE no2 = no); SELECT * FROm sample551;

    no a
    1 ์—†์Œ
    2 ์—†์Œ
    3 ์žˆ์Œ
    4 ์—†์Œ
    5 ์žˆ์Œ

    ์ด๋ ‡๋“ฏ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ์ƒํ™ฉ์„ ํŒ๋‹จํ•˜๊ณ  UPDATE๋กœ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    UPDATE๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, SELECT ๋ช…๋ น์ด๋‚˜ DELETE ๋ช…๋ น์œผ๋กœ๋„ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    โ€‹

    ์ƒ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์ƒ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ž€ ๋ถ€๋ชจ ๋ช…๋ น๊ณผ ์ž์‹์ธ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ํŠน์ • ๊ด€๊ณ„๋ฅผ ๋งบ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

    ์ด์ „์— ๋ณธ UPDATE ๋ช…๋ น์— EXISTS ์ˆ ์–ด๋ฅผ ํ†ตํ•ด ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ํ™œ์šฉํ•œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด,

    UPDATE sample551 SET a = '์žˆ์Œ' WHERE EXISTS(SELECT * FROM sample552 WHERE no2 = no);

    UPDATE ๋ช…๋ น์ด ๋ถ€๋ชจ๊ฐ€ ๋˜๊ณ , WHERE ๊ตฌ์— ๊ด„ํ˜ธ๋กœ ๋ฌถ์€ ๋ถ€๋ถ„ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์ž์‹์ด ๋œ๋‹ค.

    ์ƒ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ๋Š” ๋ถ€๋ชจ ๋ช…๋ น๊ณผ ์—ฐ๊ด€๋˜์–ด ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์—

    ์„œ๋ธŒ์ฟผ๋ฆฌ ๋ถ€๋ถ„๋งŒ์„ ๋”ฐ๋กœ ๋–ผ์–ด๋‚ด์„œ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค.

    DELETE FROM sample54 WHEN a = (SELECT MIN(a) FROM sample54);

    ๋‹ค์Œ๊ณผ ๊ฐ™์€ DELETE์˜ ๊ฒฝ์šฐ์—๋Š” ์ƒ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ๋‹จ๋… ์ฟผ๋ฆฌ๋กœ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

    โ€‹

    ํ…Œ์ด๋ธ”๋ช… ๋ถ™์ด๊ธฐ

    ๋งŒ์•ฝ ์•ž์„œ ์‚ดํŽด๋ณธ no ์—ด๊ณผ no 2์—ด๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋‘ ํ…Œ์ด๋ธ”์— ๊ฐ™์€ ์—ด์ด ์žˆ์„ ๊ฒฝ์šฐ์—๋Š”

    no=no์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

    ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์—ด์ด ์–ด๋А ํ…Œ์ด๋ธ”์˜ ๊ฒƒ์ธ์ง€ ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ํ•„์š”๊ฐ€ ์žˆ์œผ๋ฉฐ,

    ์ด๋Š” ์—ด๋ช… ์•ž์— 'ํ…Œ์ด๋ธ”๋ช….'์„ ๋ถ™์ด๋ฉด ๋œ๋‹ค.

    UPDATE sample551 SET a = '์žˆ์Œ' WHERE EXISTS(SELECT * FROM sample552 WHERE sample552.no2 = sample551.no); SELECT * FROM sample551;

    IN

    ์Šค์นผ๋ผ ๊ฐ’๋ผ๋ฆฌ ๋น„๊ตํ•  ๋•Œ๋Š” = ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ง‘ํ•ฉ์„ ๋น„๊ตํ•  ๋•Œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

    ์—ฌ๊ธฐ์„  IN์„ ์‚ฌ์šฉํ•˜๋ฉด ์ง‘ํ•ฉ ์•ˆ์˜ ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๋˜ํ•œ ํŠน์ • ์—ด์˜ ๊ฐ’์ด '๋ฌด์—‡ ๋˜๋Š”(OR) ๋ฌด์—‡'์ด๋ผ๋Š” ์กฐ๊ฑด์‹์„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ

    IN์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    โ€‹

    IN์—์„œ๋Š” ์˜ค๋ฅธ์ชฝ์— ์ง‘ํ•ฉ์„ ์ง€์ •ํ•œ๋‹ค.

    ์™ผ์ชฝ์— ์ง€์ •๋œ ๊ฐ’๊ณผ ๊ฐ™์€ ๊ฐ’์ด ์ง‘ํ•ฉ ์•ˆ์— ์กด์žฌํ•˜๋ฉด ์ฐธ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    ์ง‘ํ•ฉ์€ ์ƒ์ˆ˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด ๊ธฐ์ˆ ํ•˜๋ฉฐ, ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ๋„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ด ๊ฐ™์€ ๊ฒฝ์šฐ ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋  ํ•„์š”๋Š” ์—†๋‹ค.

    # IN์„ ์‚ฌ์šฉํ•ด ์กฐ๊ฑด์‹ ๊ธฐ์ˆ  SELECT * FROM sample551 WHERE no IN (3,5);

    # IN์˜ ์˜ค๋ฅธ์ชฝ์„ ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ์ง€์ • SELECT * FROM sample551 WEHER no IN (SELECT no2 FROM sample552);

    IN์€ ์ง‘ํ•ฉ ์•ˆ์— ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ์ฐธ์ด ๋˜๋ฉฐ, NOT IN์€ ์ง‘ํ•ฉ์— ๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ฐธ์ด ๋œ๋‹ค.

    โ€‹

    IN์—์„œ๋Š” ์ง‘ํ•ฉ ์•ˆ์— NULL ๊ฐ’์ด ์žˆ์–ด๋„ ๋ฌด์‹œํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋ฐ˜๋“œ์‹œ IS NULL์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

    ๋˜ํ•œ NOT IN์˜ ๊ฒฝ์šฐ, ์ง‘ํ•ฉ ์•ˆ์— NULL ๊ฐ’์ด ์žˆ์œผ๋ฉด ์„ค๋ น ์™ผ์ชฝ ๊ฐ’์ด ์ง‘ํ•ฉ ์•ˆ์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์•„๋„

    ์ฐธ์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ด๋•Œ ๊ฒฐ๊ณผ๋Š” ๋ถˆ๋ช…(UNKNOWN)์ด ๋œ๋‹ค.

     

    ๋ฐ˜์‘ํ˜•

    '๐Ÿ‘‹์ž๊ฒฉ์ฆ > ๐Ÿ™ˆSQLD๊ฐœ๋ฐœ์ž' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    [SQL] SQL delete๋ฌธ ๋ฐ ์ฟผ๋ฆฌ ์—ฐ์Šต  (0) 2021.11.07
    [sql ๊ณต๋ถ€๋ฒ•] ๋…ผ๋ž€ ๋๋‚ด๊ธฐ  (1) 2021.11.07
    [SQL] DB ์„ค๊ณ„(์ •๊ทœํ™”,ROLLBACK, COMMIT) 2ํŽธ  (0) 2021.11.07
    [SQL] DB ์„ค๊ณ„(์ •๊ทœํ™”,ROLLBACK, COMMIT) 1ํŽธ  (0) 2021.11.07
    ์ ‘์ˆ˜์™„๋ฃŒ  (0) 2021.11.04
      '๐Ÿ‘‹์ž๊ฒฉ์ฆ/๐Ÿ™ˆSQLD๊ฐœ๋ฐœ์ž' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
      • [SQL] SQL delete๋ฌธ ๋ฐ ์ฟผ๋ฆฌ ์—ฐ์Šต
      • [sql ๊ณต๋ถ€๋ฒ•] ๋…ผ๋ž€ ๋๋‚ด๊ธฐ
      • [SQL] DB ์„ค๊ณ„(์ •๊ทœํ™”,ROLLBACK, COMMIT) 2ํŽธ
      • [SQL] DB ์„ค๊ณ„(์ •๊ทœํ™”,ROLLBACK, COMMIT) 1ํŽธ
      Dev.Op
      Dev.Op
      Interest: CS, Drive

      ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”