mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-09-06 21:48:58 +00:00
* feat(function): add internal delta merge aggregates Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> * test(function): cover delta merge aggregates in SQL Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> * feat(function): add Welford delta merge aggregate Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> --------- Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
70 lines
1.5 KiB
SQL
70 lines
1.5 KiB
SQL
CREATE TABLE test_hll (
|
|
`id` INT PRIMARY KEY,
|
|
`value` STRING,
|
|
`ts` timestamp time index default now()
|
|
);
|
|
|
|
INSERT INTO test_hll (`id`, `value`) VALUES
|
|
(1, "a"),
|
|
(2, "b"),
|
|
(5, "e"),
|
|
(6, "f"),
|
|
(7, "g"),
|
|
(8, "h"),
|
|
(9, "i"),
|
|
(10, "j"),
|
|
(11, "i"),
|
|
(12, "j"),
|
|
(13, "i"),
|
|
(14, "n"),
|
|
(15, "o");
|
|
|
|
select hll_count(hll(`value`)) from test_hll;
|
|
|
|
INSERT INTO test_hll (`id`, `value`) VALUES
|
|
(16, "b"),
|
|
(17, "i"),
|
|
(18, "j"),
|
|
(19, "s"),
|
|
(20, "t");
|
|
|
|
select hll_count(hll(`value`)) from test_hll;
|
|
|
|
create table test_hll_merge (
|
|
`id` INT PRIMARY KEY,
|
|
`state` BINARY,
|
|
`ts` timestamp time index default now()
|
|
);
|
|
|
|
insert into test_hll_merge (`id`, `state`)
|
|
select 1, hll(`value`) from test_hll;
|
|
|
|
insert into test_hll_merge (`id`, `state`)
|
|
select 2, hll(`value`) from test_hll;
|
|
|
|
select hll_count(hll_merge(`state`)) from test_hll_merge;
|
|
|
|
CREATE TABLE test_hll_delta_merge (
|
|
`id` INT PRIMARY KEY,
|
|
`delta` BINARY,
|
|
`persisted` BINARY,
|
|
`ts` timestamp time index default now()
|
|
);
|
|
|
|
INSERT INTO test_hll_delta_merge (`id`, `delta`, `persisted`)
|
|
SELECT 1, hll(`value`), NULL FROM test_hll WHERE `id` <= 15;
|
|
|
|
INSERT INTO test_hll_delta_merge (`id`, `delta`, `persisted`)
|
|
SELECT 2, NULL, hll(`value`) FROM test_hll WHERE `id` > 15;
|
|
|
|
SELECT
|
|
hll_count(__hll_delta_merge(`delta`, `persisted`)) AS merged_count,
|
|
(SELECT hll_count(hll(`value`)) FROM test_hll) AS direct_count
|
|
FROM test_hll_delta_merge;
|
|
|
|
drop table test_hll;
|
|
|
|
drop table test_hll_merge;
|
|
|
|
drop table test_hll_delta_merge;
|