ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL - ๊ทธ๋ฃนํ•จ์ˆ˜, GROUP BY์ ˆ, HAVING์ ˆ
    DATABASE 2020. 7. 20. 08:27

     

    ๐ŸŽฏ SQL ๊ทธ๋ฃนํ•จ์ˆ˜์™€ GROUP BY์ ˆ, HAVING์ ˆ์„ ์‚ดํŽด๋ณธ๋‹ค.

     

     

     

    ๋‹ค์ค‘ ํ–‰ ํ•จ์ˆ˜

     

    ๊ฒ€์ƒ‰๋˜๋Š” ๋ชจ๋“  ํ–‰์— ๋Œ€ํ•ด ํ•จ์ˆ˜๊ฐ€ ์ ์šฉ๋˜์–ด ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋งŒ์„ ๋ฆฌํ„ดํ•œ๋‹ค.

    ์ž…๋ ฅ์ฒ˜๋ฆฌ๋˜๋Š” ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋‹จ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋งŒ ๋ฐ˜ํ™˜๋œ๋‹ค.

     

     

     

    ๊ทธ๋ฃนํ•จ์ˆ˜

     

    ์—ฌ๋Ÿฌํ–‰ ๋˜๋Š” ํ…Œ์ด๋ธ” ์ „์ฒด์— ๋Œ€ํ•ด ํ•จ์ˆ˜ ์ ์šฉ, ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜(๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฒผ์Œ)

    ๊ธฐ๋ณธ์ ์œผ๋กœ ๋„null๊ฐ’์€ ์ œ์™ธํ•˜๊ณ  ๊ณ„์‚ฐ๋œ๋‹ค.

     

     

    SUM ํ•จ์ˆ˜ : SUM( DISTINCT | ALL | ์ปฌ๋Ÿผ๋ช… )

    ํ•ด๋‹น ์ปฌ๋Ÿผ๊ฐ’๋“ค์˜ ์ดํ•ฉ ๊ตฌํ•˜๊ธฐ

    DISTINCT ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต๊ฐ’ ์ œ์™ธํ•˜๊ณ  ๊ณ„์‚ฐ, ALL ์€ ์ค‘๋ณต ํฌํ•จ.

    ์•„๋ฌด๊ฒƒ๋„ ์•ˆ์จ์ฃผ๋ฉด ALL ์ ์šฉ. ALL์€ ๋ณดํ†ต ์ƒ๋žตํ•œ๋‹ค.

     

     

    COUNT ํ•จ์ˆ˜ : COUNT( DISTINCT | ALL | ์ปฌ๋Ÿผ๋ช… )

    ํ–‰์˜ ๊ฐฏ์ˆ˜ ๋ฐ˜ํ™˜

    COUNT(*) ํ•˜๋ฉด ํ…Œ์ด๋ธ”์˜ ์ „์ฒด ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์˜ˆ์™ธ์ ์œผ๋กœ ๋„๊ฐ’๋„ ํฌํ•จ๋˜๋Š” ํ•จ์ˆ˜.

     

     

    AVG ํ•จ์ˆ˜ : AVG( DISTINCT | ALL | ์ปฌ๋Ÿผ๋ช… )

    ์ปฌ๋Ÿผ๊ฐ’์˜ ํ‰๊ท  ๊ตฌํ•˜๊ธฐ

     

     

    MAX ํ•จ์ˆ˜ : MAX( DISTINCT | ALL | ์ปฌ๋Ÿผ๋ช… )

    ์ปฌ๋Ÿผ๊ฐ’ ์ค‘ ์ตœ๋Œ“๊ฐ’. ์–˜๋„ค๋Š” ์ˆซ์ž๋ฐ์ดํ„ฐ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ๋ฌธ์ž,๋‚ ์งœ๋ฐ์ดํ„ฐ์—๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ.

     

     

    MIN ํ•จ์ˆ˜ : MIN( DISTINCT | ALL | ์ปฌ๋Ÿผ๋ช… )

    ์ปฌ๋Ÿผ๊ฐ’ ์ค‘ ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐ

     

     

    ์‹ค์Šต๋ฌธ์ œ

     

    EMP ํ…Œ์ด๋ธ”์—์„œ ๋ชจ๋“  SALESMAN์— ๋Œ€ํ•˜์—ฌ ๊ธ‰์—ฌ์˜ ํ‰๊ท , ์ตœ๊ณ ์•ก, ์ตœ์ € ์•ก, ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๊ธฐ

     

     

     

    ๐Ÿ‘‰ SELECT์˜ ๋ณต์žกํ•œ 6๊ฐœ์˜ ์ปฌ๋Ÿผ๋“ค์„ ํ•˜๋‚˜์”ฉ ํ•ด์„ํ•ด๋ณด์ž

    ํ…Œ์ด๋ธ”์— ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ์ธ์›์ˆ˜ ์ „์ฒด ์นด์šดํŠธ,

    ์ปค๋ฏธ์…˜์—์„œ ๋ˆŒ์ด ์•„๋‹Œ ์ธ์›์ˆ˜๋Š” ๊ทธ๋Œ€๋กœ ์นด์šดํŠธํ•˜๋ฉด ์•Œ์•„์„œ ๋ˆŒ๊ฐ’์ด ๊ฑธ๋Ÿฌ์งˆ๊ฑฐ๊ณ ,

    ์ปค๋ฏธ์…˜์— ๋ˆŒ์ด ์•„๋‹Œ ์ธ์›์ˆ˜๋„ ๊ทธ๋ƒฅ ํ‰๊ท ํ•จ์ˆ˜ ๋„ฃ์œผ๋ฉด ๋ˆŒ๊ฐ’ ๊ฑธ๋Ÿฌ์ง€๊ณ ,

    ์ „์ฒด ์ปค๋ฏธ์…˜์˜ ํ‰๊ท ์€ ๋ˆŒ๋„ 0์œผ๋กœ ์…‹ํŒ…ํ•ด์„œ ๊ณ„์‚ฐํ•ด์•ผํ•˜๋‹ˆ๊นŒ ํ‰๊ท ํ•จ์ˆ˜ ์•ˆ์— NVLํ•จ์ˆ˜ ์จ์„œ ์ปค๋ฏธ์…˜ ๋ˆŒ ์ดˆ๊ธฐ๊ฐ’ 0์œผ๋กœ ์„ค์ •,

    ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š” ๋ถ€์„œ์˜ ์ˆ˜๋Š” ์นด์šดํŠธ๋กœ ๊ทธ๋ƒฅ ๊ตฌํ•˜๋ฉด ๋˜๋Š”๋ฐ,

    ์ค‘๋ณต ์ œ์™ธํ•˜๋ ค๋ฉด ์นด์šดํŠธ ์•ˆ์— DISTINCT ์จ์ฃผ๊ธฐ.

    ๐Ÿ‘ ๋” ๋””ํ…Œ์ผํ•˜๊ฒŒ ๊ฐ’์„ ์ถœ๋ ฅํ•œ ๊ฒƒ์ด๋‹ค.

     

     

     

    GROUP BY ์ ˆ

    SELECT [๋‹จ์ˆœ ์ปฌ๋Ÿผ ,] ๊ทธ๋ฃนํ•จ์ˆ˜, ๊ทธ๋ฃนํ•จ์ˆ˜2
    FROM ํ…Œ์ด๋ธ”๋ช…
    [WHERE ์กฐ๊ฑด์‹]
    [GROUP BY ๋‹จ์ˆœ์ปฌ๋Ÿผ]
    [ORDER BY ํ‘œํ˜„์‹];

    ํŠน์ • ์ปฌ๋Ÿผ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃน์„ ๋ฌถ์„ ๋•Œ ์‚ฌ์šฉ

    ๋‹จ์ˆœ ์ปฌ๋Ÿผ์„ ๊ทธ๋ฃนํ•‘ํ•˜๋ฉด select์ ˆ์—์„œ ๊ทธ๋ฃนํ•จ์ˆ˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

     

     

    ๋‹จ์ˆœ ์ปฌ๋Ÿผ๊ณผ ๊ทธ๋ฃนํ•จ์ˆ˜๋Š” SELECT ์ ˆ์—์„œ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
    ๋‹จ์ˆœ ์ปฌ๋Ÿผ์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ํ–‰์€ ์—ฌ๋Ÿฌ๊ฐœ์ธ๋ฐ, ๊ทธ๋ฃนํ•จ์ˆ˜๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋งŒ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘˜์˜ ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์„œ ๋™์‹œ ์ถœ๋ ฅํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‘˜์„ ๋™์‹œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹จ์ˆœ์ปฌ๋Ÿผ์„ ๊ทธ๋ฃนํ•‘ํ•˜๋ฉด ๋œ๋‹ค.

     

     

    ์‚ฌ์šฉ์˜ˆ์‹œ

     

    EMP์—์„œ JOB์ด ๊ฐ™์€ ์‚ฌ์›๋“ค๋ผ๋ฆฌ ๋ฌถ์–ด์„œ ๊ทธ๋ฃน๋ณ„ ํ‰๊ท  ์›”๊ธ‰์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๋ถ€์„œ๊ฐ€ ๊ฐ™์€ ์‚ฌ์›๋ผ๋ฆฌ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์„œ ๊ทธ๋ฃน๋ณ„๋กœ ๋ช‡๋ช…์”ฉ ์žˆ๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

     

     

    ์ฃผ์˜์ ์ด ๋งŽ๋‹ค

     

    SELECT๋กœ ์‹œ์ž‘ํ•ด์„œ ORDER BY๋กœ ๋๋‚˜๊ณ 

    GROUP BY ๋‹ค์Œ์ด ORDER BY ์ˆœ์„œ๋‹ค.

    ๊ทธ๋ฃน๋ฐ”์ด๋กœ ๋ฌถ์€ ์ปฌ๋Ÿผ์€ ์…€๋ ‰ํŠธ์—๋„ ์žˆ์–ด์•ผํ•œ๋‹ค.

    ์—†์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฒ„๋ ค์š”

     

    ORDER BY์™€๋Š” ๋‹ค๋ฅด๊ฒŒ GROUP BY ๋’ค์—” ALIAS๋‚˜ ์ปฌ๋Ÿผ ์ˆœ์„œ ์ •์ˆ˜๊ฐ’์„ ์“ธ ์ˆ˜์—†๋‹ค. ๋ฐ˜๋“œ์‹œ ๋ช…์‹œํ•œ ์ปฌ๋Ÿผ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์“ธ ๊ฒƒ

    WHERE ์ ˆ์—๋Š” ๊ทธ๋ฃนํ•จ์ˆ˜๊ฐ€ ์˜ฌ ์ˆ˜ ์—†๋‹ค.

     

     

    EMP ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ณ„๋กœ ์ธ์›์ˆ˜, ํ‰๊ท  ๊ธ‰์—ฌ, ์ตœ์ €๊ธ‰์—ฌ, ์ตœ๊ณ  ๊ธ‰์—ฌ, ๊ธ‰์—ฌ์˜ ํ•ฉ์„ ๊ตฌํ•˜์—ฌ ์ถœ๋ ฅ

     

    ๋ถ€์„œ๋ณ„' ์–ธ๊ธ‰ ๋์„ ๋•Œ ๋ฐ”๋กœ SELECT ์— ์ปฌ๋Ÿผ ๋„ฃ๊ณ  GROUP BY์— ์ ์–ด์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค.

     

     

    ๊ฐ ๋ถ€์„œ๋ณ„๋กœ ์ธ์›์ˆ˜, ๊ธ‰์—ฌ์˜ ํ‰๊ท , ์ตœ์ € ๊ธ‰์—ฌ, ์ตœ๊ณ  ๊ธ‰์—ฌ, ๊ธ‰์—ฌ์˜ ํ•ฉ์„ ๊ตฌํ•˜์—ฌ ๊ธ‰์—ฌ์˜ ํ•ฉ์ด ๋งŽ์€ ์ˆœ์œผ๋กœ ์ถœ๋ ฅ

     

     

     

    HAVING์ ˆ

    ๊ทธ๋ฃน์œผ๋กœ ๊ตฌ๋ถ„๋œ ์• ๋“ค์„ ๋˜ ๊ฑธ๋Ÿฌ๋‚ธ๋‹ค.

    SELECT [๋‹จ์ˆœ ์ปฌ๋Ÿผ ,] ๊ทธ๋ฃนํ•จ์ˆ˜, ๊ทธ๋ฃนํ•จ์ˆ˜2
    FROM ํ…Œ์ด๋ธ”๋ช…
    [WHERE ์กฐ๊ฑด์‹]
    [GROUP BY ๋‹จ์ˆœ์ปฌ๋Ÿผ]
    [HAVING ์กฐ๊ฑด์‹]
    [ORDER BY ํ‘œํ˜„์‹];

    ์œ„ ๋ฌธ์žฅ์˜ ์˜ค๋ผํด ์‹คํ–‰์ˆœ์„œ

    1. FROM์—์„œ ํ…Œ์ด๋ธ”์„ ํƒ

    2. WHERE ์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜๋Š” ํ–‰ ์ถ”์ถœ

    3. ์ถ”์ถœ๋œ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃนํ•‘

    4. ๊ทธ์ค‘์—์„œ HAVING ์กฐ๊ฑด ์ผ์น˜ ํ–‰ ์ถ”๊ฐ€๋กœ ์ถ”์ถœ

    5. SELECT์ ˆ์— ๋ช…์‹œ๋œ ์ปฌ๋Ÿผ ํ™•์ธ

    6. ODER BY๋กœ ์ •๋ ฌ

     

     

     

    ์‹ค์Šต๋ฌธ์ œ

     

    1. EMP ํ…Œ์ด๋ธ”์—์„œ ์ „์ฒด ์›”๊ธ‰์ด 5000์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฐ ์—…๋ฌด์— ๋Œ€ํ•ด์„œ ์—…๋ฌด์™€ ์›”๊ธ‰ ํ•ฉ๊ณ„๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ๋ผ. ๋‹จ ํŒ๋งค์›์€ ์ œ์™ธํ•˜๊ณ  ์›” ๊ธ‰์—ฌ ํ•ฉ๊ณ„๋กœ ์ •๋ ฌ(๋‚ด๋ฆผ์ฐจ์ˆœ)

     

     

    2. ์‚ฌ์›ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ณ„ ์ธ์›์ˆ˜๊ฐ€ 6๋ช… ์ด์ƒ์ธ ๋ถ€์„œ์ฝ”๋“œ ๊ฒ€์ƒ‰ํ•˜๊ธฐ

    ๋ถ€์„œ๋ณ„๋กœ ๊ทธ๋ฃนํ•‘ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์ธ ๋ฐ์ดํ„ฐ๋“ค ์ค‘์—์„œ HAVING ์ ˆ์„ ์‚ฌ์šฉํ•ด ์ง€์ •๋œ ์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜๋Š” ํ–‰๋“ค์„ ์ถ”๊ฐ€๋กœ ์ถ”์ถœํ•œ๋‹ค.

     

     

    3. ์‚ฌ์›ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ๋…„๋„๋ณ„ , ์›”๋ณ„ ๊ธ‰์—ฌํ•ฉ๊ณ„๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” SQL๋ฌธ ์ž‘์„ฑํ•˜๊ธฐ

    ๊ธธ์žƒ1)

    ๋‚ด๊ฐ€ ์ฒ˜์Œ ์ž‘์„ฑํ–ˆ๋˜ ๋กœ์ง์„ ์žƒ์–ด๋ฒ„๋ฆฐ ๋งํ•œ ์ฝ”๋“œ

     

    ์ž…์‚ฌ์ผ์—์„œ ๋…„๋„์™€ ์›”๋ณ„์„ ๊ฐ๊ฐ ๋”ฐ๋กœ ์ถ”์ถœํ•ด์•ผ ํ•˜๊ณ , ๊ทธ๊ฒƒ์„ ๊ทธ๋ฃนํ•‘ํ•ด์„œ ๊ธฐ์ค€์œผ๋กœ ์žก๊ณ  ๊ทธ๋Œ€๋กœ ์ƒ๋Ÿฌ๋ฆฌ ํ•ฉ๊ณ„๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

     

    ๊ธธ์žƒ2)

    ๋˜ ๋‹ค์‹œ ๋•ก!

     

    SELECT์—์„œ ์—ฐ๋„๋ณ„, ์›”๋ณ„๋กœ ๋‚˜๋ˆ ์ค€๊ฑธ ๊ทธ๋ฃน๋ฐ”์ด๋กœ ๊ทธ๋Œ€๋กœ ๋‹ค์ค‘๊ทธ๋ฃนํ•‘ ํ•ด์คฌ์–ด์•ผ ํ–ˆ๋Š”๋ฐ HIREDATE ๋”ฑ ํ•˜๋‚˜๋งŒ ์ ์–ด๋‘๋‹ˆ ์ •๋ ฌ์ด ๊ธธ์„ ์žƒ์—ˆ๋‹ค.

     

    ์ •๋‹ต -- ๋‹ค์ค‘ ๊ทธ๋ฃนํ•‘. ๋‹ค์ค‘ ์ปฌ๋Ÿผ GROUP BY

     

    ์‚ฌ์›ํ…Œ์ด๋ธ”์—์„œ ์—ฐ๋„๋ณ„, ์›”๋ณ„์˜ ์›”๊ธ‰ํ•ฉ๊ณ„๋ฅผ ๋ณด๊ธฐ ์œ„ํ•œ๊ฑฐ๋‹ˆ๊นŒ ์—ฐ๋„๋ณ„, ์›”๋ณ„์ด ๊ทธ๋ฃนํ•‘ ๋Œ€์ƒ ์ปฌ๋Ÿผ์ด๋‹ค.

    ๋ณ€ํ™˜ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜ํ•จ์ˆ˜๋‹ค. ์–˜๋„ค๋“ค์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ๊ธฐ์œ„ํ•ด ๊ทธ๋ฃน๋ฐ”์ด ์ ˆ์— ๋„ฃ์–ด์ฃผ๊ณ , ๊ทธ ๊ทธ๋ฃน ๊ธฐ์ค€์œผ๋กœ ํ•ฉ๊ณ„ ๊ฒฐ๊ณผ๊ฐ’๋งŒ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

     

     

     

    ๐Ÿ˜œ NEXT : SQL JOIN ๊ณต๋ถ€ํ•˜๊ธฐ

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

๊ฐœ๋ฐœ๊ณต๋ถ€