GROUP BY

2025. 2. 19. 21:46ยท๐Ÿ“ SQL/๐Ÿ“
ํŠน์ • ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ํ…Œ์ด๋ธ”์— ์กด์žฌํ•˜๋Š” ํ–‰๋“ค์„ ๊ทธ๋ฃน๋ณ„๋กœ ๊ตฌ๋ถ„

 

-- mem_id๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์Œ
-- ๊ทธ๋ฃนํ•‘๋œ ๋ฐ์ดํ„ฐ์—์„œ mem_id์™€ amount ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•จ
SELECT mem_id, SUM(amount) AS 'ํ•ฉ๊ณ„'
FROM buy
GROUP BY mem_id;

-- genre๊ฐ€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃนํ•‘ → genre์™€ price ํ‰๊ท ์„ ๊ตฌํ•จ
SELECT genre, AVG(price) AS 'ํ‰๊ท '
FROM library
GROUP BY genre;

-- ์ง‘๊ณ„ ํ•จ์ˆ˜ ์•ˆ์—์„œ ์—ฐ์‚ฐ ๊ฐ€๋Šฅ
SELECT mem_id, SUM(amount * price) AS '์ด ๊ธˆ์•ก'
FROM buy
GROUP BY mem_id;

-- member ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ (NULL ํฌํ•จ๋˜์–ด์žˆ์–ด๋„ ์นด์šดํŠธ)
SELECT COUNT(*)
FROM member;
-- member ํ…Œ์ด๋ธ”์˜ phone1 ์ปฌ๋Ÿผ์ด NULL์ธ ๊ฒƒ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜
SELECT COUNT(phone1)
FROM member;

 

-- ์ฟผ๋ฆฌ๊ฐ€ ์œ ํšจํ•˜๋ ค๋ฉด name์—ด์„ SELECT์ ˆ์—์„œ ์ƒ๋žตํ•˜๊ฑฐ๋‚˜ GROUP BY์ ˆ์— ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค
SELECT o.custid, c.name, MAX(o.payment)
FROM orders AS o, customers AS c
WHERE o.custid = c.custid
GROUP BY o.custid

 

SQL:1999(SQL 3) ์ดํ›„ ๋ฒ„์ „์—์„œ๋Š” ์„ ํƒ์  ๊ธฐ๋Šฅ T301์„ ํ†ตํ•ด ํŠน์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋˜๋ฉด GROUP BY์ ˆ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋น„์ง‘๊ณ„ ์—ด์„ ํ—ˆ์šฉ

์ด ๊ฒฝ์šฐ, ํ•ด๋‹น ์—ด์ด GROUP BY์ ˆ์— ํฌํ•จ๋œ ์—ด์— ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์†๋˜์–ด์•ผ ํ•œ๋‹ค

์˜ˆ๋ฅผ ๋“ค์–ด, name๊ณผ custid ์‚ฌ์ด์— ํ•จ์ˆ˜์  ์ข…์† ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด(customers์˜ ๊ธฐ๋ณธํ‚ค๊ฐ€ custid์ธ ๊ฒฝ์šฐ), ๋น„์ง‘๊ณ„ ์—ด์ธ name์„ ์‚ฌ์šฉํ•œ ์ฟผ๋ฆฌ๋Š” ์œ ํšจํ•˜๋‹ค!

 

MySQL์€ ํ•จ์ˆ˜์  ์ข…์†์„ฑ(functional dependence) ๊ฐ์ง€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„

๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š” ONLY_FULL_GROUP_BY SQL ๋ชจ๋“œ๊ฐ€ ์„ค์ •๋˜๋ฉด ์•„๋ž˜ ์ฟผ๋ฆฌ๋ฅผ ๊ฑฐ๋ถ€

  • SELECT ๋ชฉ๋ก, HAVING ์กฐ๊ฑด ๋˜๋Š” ORDER BY ๋ชฉ๋ก์—์„œ ์ง‘๊ณ„๋˜์ง€ ์•Š์€ ์—ด์„ ์ฐธ์กฐํ•  ๋•Œ
  • ํ•ด๋‹น ์—ด์ด GROUP BY์ ˆ์— ๋ช…์‹œ์ ์œผ๋กœ ํฌํ•จ๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜,
  • GROUP BY์ ˆ์— ํฌํ•จ๋œ ์—ด์— ๋Œ€ํ•ด ํ•จ์ˆ˜์ ์œผ๋กœ ์ข…์†๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

์ฆ‰, ONLY_FULL_GROUP_BY ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋˜๋ฉด

GROUP BY์ ˆ์— ๋ช…์‹œ๋˜์ง€ ์•Š์€ ๋น„์ง‘๊ณ„ ์—ด์„ SELECT, HAVING, ORDER BY์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ,

๋งŒ์•ฝ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ•ด๋‹น ์—ด์ด GROUP BY์ ˆ์— ํฌํ•จ๋œ ์—ด์— ์˜ํ•ด ๊ฒฐ์ •๋  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค

๊ทธ๋Ÿฌ๋‚˜ GROUP BY์ ˆ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ์—ด์ด๋ผ๋„ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์—์„œ ํ•ญ์ƒ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ—ˆ์šฉ๋œ๋‹ค

 

ONLY_FULL_GROUP_BY ๋ชจ๋“œ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ,

GROUP BY์ ˆ์— ๋ช…์‹œ๋˜์ง€ ์•Š์€ ๋น„์ง‘๊ณ„ ์—ด์„ SELECT, HAVING, ORDER BY์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค

์ด ๊ฒฝ์šฐ, ์„œ๋ฒ„๋Š” ๊ฐ ๊ทธ๋ฃน์—์„œ ์ž„์˜์˜ ๊ฐ’์„ ์„ ํƒ → ๊ทธ๋ฃน ๋‚ด์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค๋ฉด ์„ ํƒ๋˜๋Š” ๊ฐ’์ด ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค

GROUP BY์ ˆ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋น„์ง‘๊ณ„ ์—ด์ด ๊ฐ ๊ทธ๋ฃน์—์„œ ํ•ญ์ƒ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค๋Š” ํ™•์‹ ์ด ์žˆ์„ ๋•Œ๋งŒ ์œ ์šฉํ•˜๋‹ค

 

ONLY_FULL_GROUP_BY ๋ชจ๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ์–ป๊ณ  ์‹ถ๋‹ค๋ฉด, ANY_VALUE() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์ง‘๊ณ„ ์—ด์„ ์ฐธ์กฐํ•˜์ž!

SELECT name, ANY_VALUE(dress), MAX(age)
FROM T
GROUP BY name
๋ฐ˜์‘ํ˜•

'๐Ÿ“ SQL > ๐Ÿ“' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

MAX()์™€ LIMIT 1  (0) 2025.02.22
LIKE / REGEXP  (0) 2025.02.20
JOIN  (0) 2025.02.19
์ˆซ์ž ํ•จ์ˆ˜  (0) 2025.02.18
๋‚ ์งœ, ์‹œ๊ฐ„ ํ•จ์ˆ˜  (0) 2025.02.17
'๐Ÿ“ SQL/๐Ÿ“' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • LIKE / REGEXP
  • JOIN
  • ์ˆซ์ž ํ•จ์ˆ˜
  • ๋‚ ์งœ, ์‹œ๊ฐ„ ํ•จ์ˆ˜
leee
leee
  • leee
    LEE
    leee
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์นดํ…Œ๊ณ ๋ฆฌ
      • ๐Ÿ“ QA
        • Test
        • Lecture
      • ๐Ÿ“ SQL
        • ๐Ÿ“
      • ๐Ÿ“ Spring
        • Lecture
        • Error
      • ๐Ÿ“ Github
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๐Ÿ 
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    MySQL
    ์ƒ์„ฑ์ž์ฃผ์ž…
    Postman
    mysql_join
    ๊นƒํ—ˆ๋ธŒ ์ธํ…”๋ฆฌ์ œ์ด ์—ฐ๋™ ํ•ด์ œ
    shift_์—ฐ์‚ฐ์ž
    AppConfig
    mysql_๋ฐ์ดํ„ฐํƒ€์ž…๋ณ€ํ™˜
    API Testing
    API ์ž๋™ํ™” ํ…Œ์ŠคํŠธ
    API test
    mysql_๊ธฐ๊ฐ„_๊ฒ€์ƒ‰
    DI ์ปจํ…Œ์ด๋„ˆ
    ์Šคํ”„๋ง ๊ฐ์ฒด์ง€ํ–ฅ
    COUNT(*)
    mismatch
    ํฌ์ŠคํŠธ๋งจ
    SQL_Join
    api ํ…Œ์ŠคํŠธ
    mysql_์—ฐ์‚ฐ์ž
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
leee
GROUP BY
์ƒ๋‹จ์œผ๋กœ

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