02์ 26์ผ์๋ก ๋น ์ฟผ๋ฆฌ์ GROUP BY ALL ๋ฌธ๋ฒ์ด ์ถ๊ฐ๋๋ค. ๊ธฐ์กด์๋ ์ฟผ๋ฆฌ๋ฅผ ๋ฌถ๊ณ ์ถ์ผ๋ฉด GROUP BY์ ์ปฌ๋ผ์ ์ง์ ํด์ค์ผ ํ๋๋ฐ, GROUP BY ALL ๋ฌธ๋ฒ์ ์ถ๊ฐ๋ก ์ด์ ๋น ์ฟผ๋ฆฌ๊ฐ SELECT ์ ์์ ๊ทธ๋ฃนํํ ํค๋ฅผ ์์์ ๋ฌถ๊ฒ ํ ์ ์๊ฒ ๋๋ค.
๋ฌถ๋ ์กฐ๊ฑด์ ๋จ์ํ๋ฐ, ์ง๊ณ ํจ์๋ ์๋์ฐ ํจ์ ์ธ ๋ช ๊ฐ์ง ๊ณต์ ๋ฌธ์์์ ์ง์ ํ ๋ถ๊ฐ ํํ ์ ์ธํ๊ณ ๋๋จธ์ง ์ปฌ๋ผ์ ๋ค ๊ทธGROUP BY์ ํฌํจ์ํค๋ ์์ด๋ค. ์ด ๋ ์๊ธฐ ์กฐ๊ฑด๋ค์ ์ ์ธํ๊ณ ๋ ํ, ๋จ์ SELECT ํญ๋ชฉ ์ค ๊ทธ๋ฃนํ ๋ถ๊ฐํ ์ ํ์ด ์๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๋ค์ ์์ ์์ ์ฟผ๋ฆฌ๋ first_name๊ณผ last_name ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ๋๋ค. total_points๋ ์ง๊ณ ํจ์ ๊ฐ์ด๋ฏ๋ก ์ ์ธ๋๋ค.
WITH PlayerStats AS (
SELECT 'Adams' as LastName, 'Noam' as FirstName, 3 as PointsScored UNION ALL
SELECT 'Buchanan', 'Jie', 0 UNION ALL
SELECT 'Coolidge', 'Kiran', 1 UNION ALL
SELECT 'Adams', 'Noam', 4 UNION ALL
SELECT 'Buchanan', 'Jie', 13)
SELECT SUM(PointsScored) AS total_points
, FirstName AS first_name
, LastName AS last_name
FROM PlayerStats
GROUP BY ALL;
/*--------------+------------+-----------+
| total_points | first_name | last_name |
+--------------+------------+-----------+
| 7 | Noam | Adams |
| 13 | Jie | Buchanan |
| 1 | Kiran | Coolidge |
+--------------+------------+-----------*/
๋ค์ ์์ ์ญ์ ์ฟผ๋ฆฌ๋ first_name๊ณผ last_name ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ๋๋ค. total_points๋ ์๋์ฐ ํจ์ ๊ฐ์ด๋ฏ๋ก ์ ์ธ๋๋ค.
WITH PlayerStats AS (
SELECT 'Adams' as LastName, 'Noam' as FirstName, 3 as PointsScored UNION ALL
SELECT 'Buchanan', 'Jie', 0 UNION ALL
SELECT 'Coolidge', 'Kiran', 1 UNION ALL
SELECT 'Adams', 'Noam', 4 UNION ALL
SELECT 'Buchanan', 'Jie', 13)
SELECT COUNT(*) OVER () AS total_people
, FirstName AS first_name
, LastName AS last_name
FROM PlayerStats
GROUP BY ALL;
/*--------------+------------+-----------+
| total_people | first_name | last_name |
+--------------+------------+-----------+
| 3 | Noam | Adams |
| 3 | Jie | Buchanan |
| 3 | Kiran | Coolidge |
+--------------+------------+-----------*/
์ฌ๋ฌ SELECT ํญ๋ชฉ์ด FROM ์ ์ ๋์ผํ ๋ถ๋ถ์ ์ฐธ๊ณ ํ๋ค๋ฉด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ฅ ์ง์ ์ ์ผ๋ก ์ง์ ํ ํ๋๋ง GROUP BY์ ๋์์ด ๋๋ค. ์๋ ์์ ์์ coordinates์ ๋ ๊ตฌ์ฑ ์์์ธ Values.x์ Values.y๊ฐ ์ด๋ฏธ ์ง์ ๊ฒฝ๋ก๋ก ์ง์ ๋ผ ์๋ ์ํ์ด๋ฏ๋ก coordinates ์ปฌ๋ผ์ GROUP BY์์ ์ ์ธ๋๋ค.
WITH Values AS (
SELECT 1 AS x, 2 AS y
UNION ALL SELECT 1 AS x, 4 AS y
UNION ALL SELECT 2 AS x, 5 AS y
)
SELECT Values.x AS x_coordinate
, Values.y AS y_coordinate
, [Values.x, Values.y] AS coordinates
FROM Values
GROUP BY ALL
/*--------------+--------------+-------------+
| x_coordinate | y_coordinate | coordinates |
+--------------+--------------+-------------+
| 1 | 4 | [1, 4] |
| 1 | 2 | [1, 2] |
| 2 | 5 | [2, 5] |
+--------------+--------------+-------------*/