[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