[Clickhouse] SQL: SELECT
clickhouse์์ SELECT๋ฌธ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฐฉ๋ฒ์ ๋๊ฐ ๋ค๋ค๋ณด๊ฒ ๋ค.
์ฟผ๋ฆฌ ๊ธฐ๋ณธ
SQL๋ค์ด ํต์์ ์ผ๋ก ์ ๊ณตํ๋ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ๋ค์ ๋ค ์๋ค.
SELECT *
FROM ํ
์ด๋ธ
JOIN ... ON ...
WHERE ...
OFFSET ... LIMIT ...
GROUP BY ...
ORDER BY ...
WHERE์ , OFFSET LIMIT ์ , ORDER BY ์ ๋ฑ์ ๋ค๋ฅธ DB๋ค๊ณผ ๊ฑฐ์ ๋๋ฑํ๋ค.


Group by์ Count ๋ฑ์ ์ง๊ณ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ DB๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ง๊ณ ์ฐ์ฐ์ ํ ์ ์๋ค.


Limit By ์
clickhouse์์ ์ ์ฉํ ๊ธฐ๋ฅ ์ค ํ๋๋ค.
๊ทธ๋ฅ Limit์๋ ํค์๋๋ง ๊ฐ์๋ฟ ์์ ํ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด๋ค.
์๋ค์ํผ clickhouse์์๋ Update๋ Unique Key ์ ์ฝ์ด ์ ์๋๋ ํธ์ธ๋ฐ, ๊ทธ๋์ ReplcaingMergeTree ๊ฐ์๊ฑธ ์ฐ๋๋ผ๋ ํค๊ฐ ๊ฐ์ ๊ฐ์ด ํญ์ ๋ ธ์ถ๋ ์ ์๋ค.
๊ทธ๋์ ์ด๋ ๊ฒ ํค๊ฐ ๊ฐ์ ๊ฐ์ด ๋ณด์กด๋๋ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํ๋ฐ,

ReplacingMergeTree์ Optimize ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ๋ณํฉํ๊ฑฐ๋, ์ง์ ์ญ์ ํ๋ ๊ฒ๋ ๋ฐฉ๋ฒ์ด์ง๋ง ๊ทธ๊ฑด ๋ํ ํ
์ด๋ธ์์๋ ๊ทธ๋ค์ง ํจ์จ์ ์ด์ง ์๋ค.
๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์ Limit 1 by id๋ฅผ ๊ฑธ์ด์, ํด๋น id๋ฅผ ๊ธฐ์ค์ผ๋ก ์ต์ ๊ฐ๋ง ๊ฐ์ ธ์ค๋๋ก ํ๋ ๊ฒ์ด๋ค.

๋ฌธ์ ์ฐธ์กฐ
https://clickhouse.com/docs/sql-reference/statements/select/limit-by
Sample ์
๋ฐ์ดํฐ ์ํ๋ง์ ์ํด ์ ๊ณต๋๋ ๊ธฐ๋ฅ์ด๋ค.
๋ํ ๋ฐ์ดํฐ์
์ ๋ํด์ ๋๋ต์ ์ธ ์์น๋ง ๋น ๋ฅด๊ฒ ๋ฝ์๋ด๊ณ ์ถ์๋ ์ฌ์ฉํ ์ ์๋ค .
๋น์จ ๊ธฐ๋ฐ์ด๋ ํ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๊ฐ ์ค์บํด์ ์ฒ๋ฆฌํ๋๋ก ํ ์ ์๋ค.
SELECT *
FROM table
SAMPLE 0.1 -- 10%๋ง ์ํ๋ง
SELECT *
FROM table
SAMPLE 1000 -- ํ 1000๊ฐ๋ง ์ํ๋ง
์ฐธ๊ณ ๋ก ์ด๊ฑด ํ ์ด๋ธ Setting์ ์ํ๋ง ํค ์ค์ ์ด ๋์ด์์ด์ผ ์ฌ์ฉํ ์ ์๋ค.
์ค์ ๋ฐฉ๋ฒ์ ๋ค์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๋ค.
https://clickhouse.com/docs/engines/table-engines/mergetree-family/mergetree#sample-by
WIth ์
clickhorse๋ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋จ์ํํ๊ธฐ ์ํ ์ฉ๋๋ก with์ ์ ์ ๊ณตํ๋ค.
์ด๋ฅผ ํตํด ์์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ์ with์ผ๋ก ๋ฐ์ธ๋ฉํ ์ดํ์ ์ฌ์ฌ์ฉํ๊ฑฐ๋ ํ ์ ์๋ค.
์ฐธ์กฐ
https://clickhouse.com/docs/sql-reference/statements/select/limit-by
https://clickhouse.com/docs/sql-reference/statements/select