์ง๊ณ ํจ์ยถ
์ง๊ณ ํจ์๋ ํ ์ ์ฒด์ ๊ฐ์ ๋ํ ์ฐ์ฐ์ ํตํด ํฉ๊ณ, ํ๊ท , ๊ณ์ฐ, ์ต์๊ฐ/์ต๋๊ฐ, ํ์ค ํธ์ฐจ, ์ถ์ ๊ณผ ๊ฐ์ ์ํ์ ๊ณ์ฐ์ ๋ฌผ๋ก ์ด๊ณ , ๋ช ๊ฐ์ง ๋น์ํ์ ์ฐ์ฐ๋ ์ํํฉ๋๋ค.
์ง๊ณ ํจ์๋ ์ฌ๋ฌ ํ(์ค์ ๋ก๋ 0๊ฐ, 1๊ฐ ๋๋ ๊ทธ ์ด์์ ํ)์ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ์ ๋จ์ผ ์ถ๋ ฅ๊ฐ์ ์์ฑํฉ๋๋ค. ๋ฐ๋๋ก, ์ค์นผ๋ผ ํจ์๋ ํ๋์ ํ์ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ์ ํ๋์ ํ(ํ๋์ ๊ฐ)์ ์ถ๋ ฅ๊ฐ์ผ๋ก ์์ฑํฉ๋๋ค.
์ง๊ณ ํจ์๋ ์
๋ ฅ๊ฐ์ 0๊ฐ์ ํ์ด ํฌํจ๋์ด ์์ ๋๋ ํญ์ ์ ํํ ํ๋์ ํ์ ๋ฐํํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก, ์
๋ ฅ๊ฐ์ 0๊ฐ์ ํ์ด ํฌํจ๋๋ ๊ฒฝ์ฐ ์ถ๋ ฅ๊ฐ์ NULL์
๋๋ค. ํ์ง๋ง ์ง๊ณ ํจ์๋๊ฐ์ ํ์ ์ ๋ฌํ ๋ 0
, ๋น ๋ฌธ์์ด ๋๋ ๊ธฐํ ๊ฐ์ ๋ฐํํ ์ ์์ต๋๋ค.
์ด ํญ๋ชฉ์ ๋ด์ฉ:
ํจ์์ ๋ชฉ๋ก(ํ์ ์นดํ ๊ณ ๋ฆฌ๋ณ)ยถ
ํจ์ ์ด๋ฆ |
์ฐธ๊ณ |
---|---|
์ผ๋ฐ ์ง๊ณ |
|
๋ค๋ฅธ ์ง๊ณ ํจ์์ ๋ค๋ฅธ ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. |
|
๋ค๋ฅธ ์ง๊ณ ํจ์์ ๋ค๋ฅธ ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. |
|
STDDEV์ STDDEV_SAMP๋ ๋ณ์นญ์ ๋๋ค. |
|
VAR_POP ์ ๋ณ์นญ์ ๋๋ค. |
|
VAR_SAMP ์ ๋ณ์นญ์ ๋๋ค. |
|
๋นํธ ์ง๊ณ |
|
๋ถ์ธ ์ง๊ณ |
|
ํด์ |
|
๋ฐ์ ํ ๋ฐ์ดํฐ ์ง๊ณ |
|
์ ํ ํ๊ท |
|
ํต๊ณ ๋ฐ ํ๋ฅ |
|
๊ณ ์ ๊ฐ ๊ณ์ฐ |
|
์นด๋๋๋ฆฌํฐ ์ถ์ . (HyperLogLog ์ฌ์ฉ) |
|
HLL ์ ๋ณ์นญ์ ๋๋ค. |
|
์ง๊ณ ํจ์๊ฐ ์๋๋ฉฐ, DATASKETCHES_HLL_ACCUMULATE ๋๋ DATASKETCHES_HLL_COMBINE ์ ์ค์นผ๋ผ ์ ๋ ฅ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. |
|
์ง๊ณ ํจ์๊ฐ ์๋๋ฉฐ, HLL_ACCUMULATE ๋๋ HLL_COMBINE ์ ์ค์นผ๋ผ ์ ๋ ฅ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. |
|
์ ์ฌ์ฑ ์ถ์ . (MinHash ์ฌ์ฉ) |
|
APPROXIMATE_SIMILARITY ์ ๋ณ์นญ์ ๋๋ค. |
|
๋น๋ ์ถ์ . (๊ณต๊ฐ ์ ์ฝ ์ฌ์ฉ) |
|
์ง๊ณ ํจ์๊ฐ ์๋๋ฉฐ, APPROX_TOP_K_ACCUMULATE ๋๋ APPROX_TOP_K_COMBINE ์ ์ค์นผ๋ผ ์ ๋ ฅ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. |
|
๋ฐฑ๋ถ์์ ์ถ์ . (t-Digest ์ฌ์ฉ) |
|
์ง๊ณ ํจ์๊ฐ ์๋๋ฉฐ, APPROX_PERCENTILE_ACCUMULATE ๋๋ APPROX_PERCENTILE_COMBINE ์ ์ค์นผ๋ผ ์ ๋ ฅ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. |
|
์ง๊ณ ์ ํธ๋ฆฌํฐ |
|
์ง๊ณ ํจ์๋ ์๋์ง๋ง, GROUP BY ์ฟผ๋ฆฌ๋ก ์์ฑ๋ ํ์ ์ง๊ณ ์์ค์ ๊ฒฐ์ ํ๊ธฐ ์ํด ์ง๊ณ ํจ์์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. |
|
GROUPING ์ ๋ณ์นญ์ ๋๋ค. |
์๊ฐ ์ยถ
๋ค์ ์์์๋ ์ง๊ณ ํจ์(AVG)์ ์ค์นผ๋ผ ํจ์(COS)์ ์ฐจ์ด์ ์ ๋ณด์ฌ์ค๋๋ค. ์ค์นผ๋ผ ํจ์๋ ๊ฐ ์ ๋ ฅ ํ์ ๋ํด ํ๋์ ์ถ๋ ฅ ํ์ ๋ฐํํ๋ ๋ฐ๋ฉด, ์ง๊ณ ํจ์๋ ์ฌ๋ฌ ์ ๋ ฅ ํ์ ๋ํด ํ๋์ ์ถ๋ ฅ ํ์ ๋ฐํํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ํ ์ด๋ธ์ ๋ง๋ค๊ณ ๊ฐ์ผ๋ก ์ฑ์๋๋ค.
CREATE TABLE simple (x INTEGER, y INTEGER);
INSERT INTO simple (x, y) VALUES
(10, 20),
(20, 44),
(30, 70);
ํ ์ด๋ธ์ ์ฟผ๋ฆฌํฉ๋๋ค.
SELECT x, y
FROM simple
ORDER BY x,y;
+----+----+
| X | Y |
|----+----|
| 10 | 20 |
| 20 | 44 |
| 30 | 70 |
+----+----+
์ค์นผ๋ผ ํจ์๋ ๊ฐ ์ ๋ ฅ ํ์ ๋ํด ํ๋์ ์ถ๋ ฅ ํ์ ๋ฐํํฉ๋๋ค.
SELECT COS(x)
FROM simple
ORDER BY x;
+---------------+
| COS(X) |
|---------------|
| -0.8390715291 |
| 0.4080820618 |
| 0.1542514499 |
+---------------+
์ง๊ณ ํจ์๋ ์ฌ๋ฌ ์ ๋ ฅ ํ์ ๋ํด ํ๋์ ์ถ๋ ฅ ํ์ ๋ฐํํฉ๋๋ค.
SELECT SUM(x)
FROM simple;
+--------+
| SUM(X) |
|--------|
| 60 |
+--------+
์ง๊ณ ํจ์ ๋ฐ NULL ๊ฐยถ
์ผ๋ถ ์ง๊ณ ํจ์๋ NULL ๊ฐ์ ๋ฌด์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, AVG ๋ ๋ค์ ์์์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ 1
, 5
, NULL
์ ํ๊ท ์ด 3
์ธ ๊ฒ์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
(1 + 5) / 2 = 3
๋ถ์์ ๋ถ๋ชจ์์ ๋ชจ๋ NULL์ด ์๋ ๊ฐ ๋ ๊ฐ๋ง ์ฌ์ฉํฉ๋๋ค.
์ง๊ณ ํจ์์ ์ ๋ฌ๋ ๋ชจ๋ ๊ฐ์ด NULL์ธ ๊ฒฝ์ฐ ์ง๊ณ ํจ์๋ NULL์ ๋ฐํํฉ๋๋ค.
์ผ๋ถ ์ง๊ณ ํจ์์๋ ๋ ์ด์์ ์ด์ด ์ ๋ฌ๋ ์ ์์ต๋๋ค. ์:
SELECT COUNT(col1, col2) FROM table1;
์ด๋ฐ ๊ฒฝ์ฐ์๋ ๊ฐ๋ณ ์ด์ด NULL์ด๋ฉด ์ง๊ณ ํจ์๊ฐ ํ์ ๋ฌด์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์ ์ฟผ๋ฆฌ์์๋ ์ ํํ ์ด์์ ๋ค ํ ์ค ์ธ ํ์ ํ๋ ์ด์์ NULL ๊ฐ์ด ์์ผ๋ฏ๋ก COUNT ๋ 4
๊ฐ ์๋๋ผ 1
์ ๋ฐํํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ํ ์ด๋ธ์ ๋ง๋ค๊ณ ๊ฐ์ผ๋ก ์ฑ์๋๋ค.
CREATE OR REPLACE TABLE test_null_aggregate_functions (x INT, y INT);
INSERT INTO test_null_aggregate_functions (x, y) VALUES
(1, 2), -- No NULLs.
(3, NULL), -- One but not all columns are NULL.
(NULL, 6), -- One but not all columns are NULL.
(NULL, NULL); -- All columns are NULL.
ํ ์ด๋ธ์ ์ฟผ๋ฆฌํฉ๋๋ค.
SELECT COUNT(x, y) FROM test_null_aggregate_functions;
+-------------+
| COUNT(X, Y) |
|-------------|
| 1 |
+-------------+
๋ ๊ฐ ์ด์์ ์ด์ ์ฐธ์กฐํ๋ ์์ผ๋ก SUM ์ ํธ์ถํ๊ณ ํด๋น ์ด ์ค ํ๋ ์ด์์ด NULL์ธ ๊ฒฝ์ฐ ์ด ์์ NULL๋ก ๊ณ์ฐ๋๊ณ ํ์ ๋ฌด์๋ฉ๋๋ค.
SELECT SUM(x + y) FROM test_null_aggregate_functions;
+------------+
| SUM(X + Y) |
|------------|
| 3 |
+------------+
๋ค์๊ณผ ๊ฐ์ด ์ด ๋์์ ์ผ๋ถ ์ด์ด NULL์ผ ๋ ํ์ ์ญ์ ํ์ง ์๋ GROUP BY ์ ๋์๊ณผ ๋ค๋ฆ ๋๋ค.
SELECT x AS X_COL, y AS Y_COL
FROM test_null_aggregate_functions
GROUP BY x, y;
+-------+-------+
| X_COL | Y_COL |
|-------+-------|
| 1 | 2 |
| 3 | NULL |
| NULL | 6 |
| NULL | NULL |
+-------+-------+