๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Computer Science/Database

9 ORDER BY, GROUP BY (feat. HAVING)

by Dowon Kang 2024. 1. 12.

 

 

1) ORDER BY

์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ํŠน์ • ์†์„ฑ(attribute)์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ํ‘œ์‹œ

์˜ค๋ฆ„์ฐจ์ˆœ : ASC /  ๋‚ด๋ฆผ์ฐจ์ˆœ : DESC

 

 

2) Aggregate Function

์—ฌ๋Ÿฌ tuple๋“ค์˜ ์ •๋ณด๋ฅผ ์š”์•ฝํ•ด์„œ ํ•˜๋‚˜์˜ ๊ฐ’์œผ๋กœ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜ (NULL๊ฐ’์€ ์ œ์™ธ)

 

 

3) GROUP BY

๊ด€์‹ฌ์žˆ๋Š” attribute(์†์„ฑ)๋“ค์„ ๊ธฐ์ค€์œผ๋กœ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ ์„œ ํ‘œ์‹œ 

  • Grouping attribute : ๊ทธ๋ฃน์„ ๋‚˜๋ˆ„๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” ์†์„ฑ
  • Group by๋Š” Aggregate Function๊ณผ ๊ฐ™์ด ์ž์ฃผ ์“ฐ์ธ๋‹ค
  • NULL๊ฐ’์€ NULL๊ฐ’๋ผ๋ฆฌ ๋ฌถ์ธ๋‹ค
SELECT Country, City, CONCAT_WS(', ', City, Country) FROM Customers GROUP BY Country, City;
SELECT  COUNT(*), OrderDate FROM Orders **GROUP BY** OrderDate;
SELECT  ProductID,  SUM(Quantity) AS QuantitySum FROM OrderDetails 
   GROUP BY ProductID ORDER BY QuantitySum DESC;

 

- HAVING

Group by์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉฐ ๊ฒฐ๊ณผ๊ฐ’์— ์กฐ๊ฑด์„ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ

SELECT  COUNT(*) AS Count, OrderDate FROM Orders WHERE OrderDate > DATE('1996-12-31') 
  GROUP BY OrderDate HAVING Count > 2;

- WITH ROLLUP

์ „์ฒด ์ง‘๊ณ„๊ฐ’์„ ํ…Œ์ด๋ธ” ๋ฐ‘์— ์ถ”๊ฐ€

ORDER BY์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ์€ ๋ถˆ๊ฐ€

 

 

4) EXAMPLES 

1. ๊ฐ ๋ถ€์„œ๋ณ„ ์„ฑ๋ณ„ ์ธ์›์ˆ˜๋ฅผ ์ธ์› ์ˆ˜๊ฐ€ ๋งŽ์€ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค

SELECT dept_id, sex, COUNT(*) AS empl_count FROM employee
GROUP BY dept_id, sex
ORDER BY empl_count DESC;

 

2. ํšŒ์‚ฌ ์ „์ฒด ํ‰๊ท  ์—ฐ๋ด‰๋ณด๋‹ค ํ‰๊ท  ์—ฐ๋ด‰์ด ์ ์€ ๋ถ€์„œ๋“ค์˜ ํ‰๊ท  ์—ฐ๋ด‰์„ ์•Œ๊ณ  ์‹ถ๋‹ค

SELECT dept_id, AVG(salary) FROM employee
GROUP BY dept_id 
HAVING AVG(salary) < ( 
   SELECT AVG(salary) FROM employee);

 

 

 


MySQL Tryit Editor v1.0 (w3schools.com)

SQL Tryit Editor v1.6 (w3schools.com)

 

 

'Computer Science > Database' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

20 Normalization  (0) 2024.01.16
12 Trigger  (0) 2024.01.13
8 JOIN  (0) 2024.01.12
7 READ (Feat. Subquery)  (0) 2024.01.11
6 Create(Insert), Update, Delete  (1) 2024.01.11

๋Œ“๊ธ€