1) ORDER BY
์กฐํ ๊ฒฐ๊ณผ๋ฅผ ํน์ ์์ฑ(attribute)์ผ๋ก ์ ๋ ฌํ์ฌ ํ์
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
์ ์ฒด ์ง๊ณ๊ฐ์ ํ ์ด๋ธ ๋ฐ์ ์ถ๊ฐ
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 |
๋๊ธ