#32 [ORACLE] ์ง‘๊ณ„ ํ•จ์ˆ˜, GROUP BY, DISTINCT, VIEW

    ๐Ÿ“Œ ์ง‘๊ณ„ ํ•จ์ˆ˜ (Aggregate Function)

    :  ์ด๋ฏธ ๊ธฐ๋ก๋œ ์ •๋ณด๋ฅผ ๋ชจ์•„์„œ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜

    ์ž…๋ ฅ์ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ–‰์ด๊ณ , ์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‚˜์ž„

    COUNT(*)์„ ์ œ์™ธํ•˜๊ณ , ์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” NULL ๊ฐ’์„ ํฌํ•จํ•˜์ง€ ์•Š์Œ

     

    WHERE ์ ˆ์— ๋ฐ”๋กœ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ

    ๐Ÿ‘‰ HAVING์ ˆ์— ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ WHERE์ ˆ์˜ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

     

    ๐Ÿ’ก COUNT()

    : ํŠน์ •ํ•œ ๊ธฐ์ค€์„ ์ถฉ์กฑํ•˜๋Š” ํ–‰์˜ ์ˆ˜๋ฅผ RETURN

    ๐Ÿšจ COUNT(*)์„ ํ•  ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  NULL๊ฐ’์€ ํฌํ•จํ•˜์ง€ ์•Š์Œ(์„ธ์ง€ ์•Š์Œ)

    ๐Ÿ’ก SUM()

    : ์ˆซ์žํ˜• COLUMN์˜ ์ด ํ•ฉ์„ RETURN

    ๐Ÿšจ NULL๊ฐ’์€ ์ œ์™ธ

    ๐Ÿ’ก AVG()

    : ์ˆซ์žํ˜• COLUMN์˜ ํ‰๊ท  ๊ฐ’์„ RETURN

    ๐Ÿšจ NULL ๊ฐ’์€ ์ œ์™ธ๋จ

    ๐Ÿ‘‰ NULL๊ฐ’์„ ํฌํ•จํ•œ ํ‰๊ท ์„ ๊ตฌํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ SUM(COLUMN1)/COUNT(*)์„ ํ•˜๋ฉด ๋จ (COUNT(*)๋Š” NULL๊ฐ’๋„ ํฌํ•จํ•˜๋ฏ€๋กœ)

    ๐Ÿ’ก MIN()

    : COLUMN์˜ ๋ฐ์ดํ„ฐ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ RETURN

    ๐Ÿšจ ์ˆซ์žํ˜•์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

    ๐Ÿ’ก MAX()

    : COLUMN์˜ ๋ฐ์ดํ„ฐ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ RETURN

    ๐Ÿšจ ์ˆซ์žํ˜•์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

     


    ๐Ÿ“Œ GROUP BY

    : ๊ทธ๋ฃน๋ณ„๋กœ ์ง‘๊ณ„๋œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉ

    ์ง‘๊ณ„ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผํ•จ

    SELECT ์ง‘๊ณ„ํ•จ์ˆ˜1(์ปฌ๋Ÿผ๋ช…1), ์ง‘๊ณ„ํ•จ์ˆ˜2(์ปฌ๋Ÿผ๋ช…2),...
    FROM ํ…Œ์ด๋ธ”๋ช…
    GROUP BY ์ปฌ๋Ÿผ๋ช…; --๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์„ ๊ธฐ์ค€ ์ปฌ๋Ÿผ

    ๐Ÿ’ก HAVING

    : GROUP BY์— ๋Œ€ํ•œ ์กฐ๊ฑด์ ˆ, ๊ทธ๋ฃน ์ค‘ ์กฐ๊ฑด์— ๋งž๋Š” ๊ทธ๋ฃน๋งŒ ๋‚จ๊น€

    SELECT ...
    FROM ...
    WHERE ...
    GROUP BY ...
    HAVING ...
    ORDER BY ... --์ •๋ ฌ

     


    ๐Ÿ“Œ DISTINCT

    : ์ค‘๋ณต๋œ ๊ฐ’์„ ์ œ์™ธํ•ด์ฃผ๋Š” ํ‚ค์›Œ๋“œ

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

    SELECT DISTINCT ์ปฌ๋Ÿผ๋ช…1,์ปฌ๋Ÿผ๋ช…2, ...
    FROM ํ…Œ์ด๋ธ”๋ช…;

    ๐Ÿ“Œ CEIL, FLOOR, ROUND, TRUNCATE

    ๐Ÿ’ก CEIL()

    :  ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด '์ •์ˆ˜' ์ค‘ ํฐ ์ˆ˜๋กœ ๋ฐ˜ํ™˜

    SELECT CEIL(125.224); --> 126

    ๐Ÿ’ก FLOOR()

    :  ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด '์ •์ˆ˜' ์ค‘ ์ž‘์€ ์ˆ˜๋กœ ๋ฐ˜ํ™˜

    SELECT FLOOR(125.224); --> 125

    ๐Ÿ’ก ROUND()

    : ์ง€์ •ํ•˜๋Š” ์†Œ์ˆซ์  ์ž๋ฆฌ๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ๋ฐ˜ํ™˜

    SELECT ROUND(125.224, 2) --> 125.22
    SELECT ROUND(125.224, 1) --> 124.2
    SELECT ROUND(125.224, 0) --> 125
    SELECT ROUND(125.224,-1) --> 130, 12'5'์—์„œ ๋ฐ˜์˜ฌ๋ฆผ

    ๐Ÿ’ก TRUNCATE()

    : N๋ฒˆ์งธ ์ž๋ฆฌ๊นŒ์ง€๋งŒ ๋ฐ˜ํ™˜

    SELECT TRUNCATE(125.224,1) --> 125.2

    ๐Ÿ“Œ VIEW

    : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ‘๊ทผ์ด ํ—ˆ์šฉ๋œ ์ž๋ฃŒ๋งŒ์„ ์ œํ•œ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”๋กœ๋ถ€ํ„ฐ ์œ ๋„๋œ ๊ฐ€์ƒ ํ…Œ์ด๋ธ”

    ์ €์žฅ ์žฅ์น˜ ๋‚ด์— ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์กด์žฌํ•˜์ง€ ์•Š์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ„์ฃผ๋จ

    ๋ฐ์ดํ„ฐ ๋ณด์ •์ž‘์—…, ์ฒ˜๋ฆฌ๊ณผ์ • ์‹œํ—˜ ๋“ฑ ์ž„์‹œ์ ์ธ ์ž‘์—…์„ ์œ„ํ•œ ์šฉ๋„๋กœ ํ™œ์šฉ๋จ

     

    โœ… ์žฅ์ 

    1. ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ์„ ์ œ๊ณต

    2. ๋™์ผ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋™์‹œ์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž์˜ ์ƒ์ดํ•œ ์‘์šฉ์ด๋‚˜ ์š”๊ตฌ๋ฅผ ์ง€์›ํ•ด์คŒ

    3. ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด์คŒ

    4. ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ†ตํ•œ ์ž๋™ ๋ณด์•ˆ์ด ์ œ๊ณต๋จ

     

    โœ… ๋‹จ์ 

    1. ๋…๋ฆฝ์ ์ธ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ

    2. ALTER VIEW๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ.

    3. ๋ทฐ๋กœ ๊ตฌ์„ฑ๋œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฐฑ์‹ , ์—ฐ์‚ฐ์— ์ œ์•ฝ์ด ๋”ฐ๋ฆ„

    ๐Ÿ’ก ๋ทฐ ์ƒ์„ฑ

    CREATE VIEW ๋ทฐ ๋ช…(์ปฌ๋Ÿผ ๋ช…1, ์ปฌ๋Ÿผ ๋ช…2, ...) AS SELECT ๋ฌธ;

    ๐Ÿ’ก ๋ทฐ ์‚ญ์ œ

    DROP VIEW ๋ทฐ ๋ช…;
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€