mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-19 22:40:40 +00:00
fix: distinct respect in range (#5015)
* fix: distinct respect in range * tests: sqlness * chore: newline
This commit is contained in:
@@ -773,6 +773,8 @@ impl RangeSelect {
|
||||
} else {
|
||||
vec![]
|
||||
};
|
||||
let distinct = aggr.distinct;
|
||||
// TODO(discord9): add default null treatment?
|
||||
|
||||
let input_phy_exprs = self.create_physical_expr_list(
|
||||
matches!(
|
||||
@@ -786,7 +788,7 @@ impl RangeSelect {
|
||||
match &aggr.func_def {
|
||||
AggregateFunctionDefinition::BuiltIn(fun) => create_aggr_expr(
|
||||
fun,
|
||||
false,
|
||||
distinct,
|
||||
&input_phy_exprs,
|
||||
&order_by,
|
||||
&input_schema,
|
||||
@@ -801,7 +803,7 @@ impl RangeSelect {
|
||||
&input_schema,
|
||||
name,
|
||||
false,
|
||||
false,
|
||||
distinct,
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,3 +105,53 @@ DROP TABLE host;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
CREATE TABLE grpc_latencies (
|
||||
ts TIMESTAMP TIME INDEX,
|
||||
host STRING,
|
||||
method_name STRING,
|
||||
latency DOUBLE,
|
||||
PRIMARY KEY (host, method_name)
|
||||
) with('append_mode'='true');
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
INSERT INTO grpc_latencies (ts, host, method_name, latency) VALUES
|
||||
('2024-07-11 20:00:06', 'host1', 'GetUser', 103.0),
|
||||
('2024-07-11 20:00:06', 'host2', 'GetUser', 113.0),
|
||||
('2024-07-11 20:00:07', 'host1', 'GetUser', 103.5),
|
||||
('2024-07-11 20:00:07', 'host2', 'GetUser', 107.0),
|
||||
('2024-07-11 20:00:08', 'host1', 'GetUser', 104.0),
|
||||
('2024-07-11 20:00:08', 'host2', 'GetUser', 96.0),
|
||||
('2024-07-11 20:00:09', 'host1', 'GetUser', 104.5),
|
||||
('2024-07-11 20:00:09', 'host2', 'GetUser', 114.0);
|
||||
|
||||
Affected Rows: 8
|
||||
|
||||
SELECT ts, count(distinct host) RANGE '5s' as h FROM grpc_latencies ALIGN '5s' by (method_name);
|
||||
|
||||
+---------------------+---+
|
||||
| ts | h |
|
||||
+---------------------+---+
|
||||
| 2024-07-11T20:00:05 | 2 |
|
||||
+---------------------+---+
|
||||
|
||||
SELECT ts, count(*) RANGE '5s' as h FROM grpc_latencies ALIGN '5s' by (method_name);
|
||||
|
||||
+---------------------+---+
|
||||
| ts | h |
|
||||
+---------------------+---+
|
||||
| 2024-07-11T20:00:05 | 8 |
|
||||
+---------------------+---+
|
||||
|
||||
select date_bin(INTERVAL '5s', ts) as t, count(distinct host) as count from grpc_latencies group by t;
|
||||
|
||||
+---------------------+-------+
|
||||
| t | count |
|
||||
+---------------------+-------+
|
||||
| 2024-07-11T20:00:05 | 2 |
|
||||
+---------------------+-------+
|
||||
|
||||
DROP TABLE grpc_latencies;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
|
||||
@@ -58,3 +58,29 @@ INSERT INTO TABLE host VALUES
|
||||
SELECT ts, max(val) RANGE '5s' FROM host ALIGN '20s' ORDER BY ts;
|
||||
|
||||
DROP TABLE host;
|
||||
|
||||
CREATE TABLE grpc_latencies (
|
||||
ts TIMESTAMP TIME INDEX,
|
||||
host STRING,
|
||||
method_name STRING,
|
||||
latency DOUBLE,
|
||||
PRIMARY KEY (host, method_name)
|
||||
) with('append_mode'='true');
|
||||
|
||||
INSERT INTO grpc_latencies (ts, host, method_name, latency) VALUES
|
||||
('2024-07-11 20:00:06', 'host1', 'GetUser', 103.0),
|
||||
('2024-07-11 20:00:06', 'host2', 'GetUser', 113.0),
|
||||
('2024-07-11 20:00:07', 'host1', 'GetUser', 103.5),
|
||||
('2024-07-11 20:00:07', 'host2', 'GetUser', 107.0),
|
||||
('2024-07-11 20:00:08', 'host1', 'GetUser', 104.0),
|
||||
('2024-07-11 20:00:08', 'host2', 'GetUser', 96.0),
|
||||
('2024-07-11 20:00:09', 'host1', 'GetUser', 104.5),
|
||||
('2024-07-11 20:00:09', 'host2', 'GetUser', 114.0);
|
||||
|
||||
SELECT ts, count(distinct host) RANGE '5s' as h FROM grpc_latencies ALIGN '5s' by (method_name);
|
||||
|
||||
SELECT ts, count(*) RANGE '5s' as h FROM grpc_latencies ALIGN '5s' by (method_name);
|
||||
|
||||
select date_bin(INTERVAL '5s', ts) as t, count(distinct host) as count from grpc_latencies group by t;
|
||||
|
||||
DROP TABLE grpc_latencies;
|
||||
|
||||
Reference in New Issue
Block a user