mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 18:43:18 +08:00
This changes the license text for SQL files to be identical with the license text for C files.
92 lines
3.5 KiB
SQL
92 lines
3.5 KiB
SQL
-- This file and its contents are licensed under the Apache License 2.0.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-APACHE for a copy of the license.
|
|
|
|
:PREFIX SELECT time_bucket('1 minute', time) AS MetricMinuteTs, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs
|
|
ORDER BY MetricMinuteTs DESC;
|
|
|
|
:PREFIX SELECT time_bucket('1 hour', time) AS MetricMinuteTs, metricid, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs, metricid
|
|
ORDER BY MetricMinuteTs DESC, metricid;
|
|
|
|
--should be too many groups will not hashaggregate
|
|
:PREFIX SELECT time_bucket('1 second', time) AS MetricMinuteTs, metricid, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs, metricid
|
|
ORDER BY MetricMinuteTs DESC, metricid;
|
|
|
|
:PREFIX SELECT time_bucket('1 minute', time, INTERVAL '30 seconds') AS MetricMinuteTs, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs
|
|
ORDER BY MetricMinuteTs DESC;
|
|
|
|
:PREFIX SELECT time_bucket(60, time_int) AS MetricMinuteTs, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs
|
|
ORDER BY MetricMinuteTs DESC;
|
|
|
|
:PREFIX SELECT time_bucket(60, time_int, 10) AS MetricMinuteTs, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs
|
|
ORDER BY MetricMinuteTs DESC;
|
|
|
|
:PREFIX SELECT time_bucket('1 day', time_date) AS MetricMinuteTs, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs
|
|
ORDER BY MetricMinuteTs DESC;
|
|
|
|
:PREFIX SELECT date_trunc('minute', time) AS MetricMinuteTs, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs
|
|
ORDER BY MetricMinuteTs DESC;
|
|
|
|
\set ON_ERROR_STOP 0
|
|
--can't optimize invalid time unit
|
|
:PREFIX SELECT date_trunc('invalid', time) AS MetricMinuteTs, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs
|
|
ORDER BY MetricMinuteTs DESC;
|
|
\set ON_ERROR_STOP 1
|
|
|
|
:PREFIX SELECT date_trunc('day', time_date) AS MetricMinuteTs, AVG(value) as avg
|
|
FROM hyper
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs
|
|
ORDER BY MetricMinuteTs DESC;
|
|
|
|
--joins
|
|
--with hypertable, optimize
|
|
:PREFIX SELECT time_bucket(3600, time_int, 10) AS MetricMinuteTs, metric.value, AVG(hyper.value) as avg
|
|
FROM hyper
|
|
JOIN metric ON (hyper.metricid = metric.id)
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs, metric.id
|
|
ORDER BY MetricMinuteTs DESC, metric.id;
|
|
|
|
--no hypertable involved, no optimization
|
|
:PREFIX SELECT time_bucket(3600, time_int, 10) AS MetricMinuteTs, metric.value, AVG(regular.value) as avg
|
|
FROM regular
|
|
JOIN metric ON (regular.metricid = metric.id)
|
|
WHERE time >= '2001-01-04T00:00:00' AND time <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs, metric.id
|
|
ORDER BY MetricMinuteTs DESC, metric.id;
|
|
|
|
-- Try with time partitioning function. Currently not optimized for hash aggregates
|
|
:PREFIX SELECT time_bucket('1 minute', unix_to_timestamp(time)) AS MetricMinuteTs, AVG(value) as avg
|
|
FROM hyper_timefunc
|
|
WHERE unix_to_timestamp(time) >= '2001-01-04T00:00:00' AND unix_to_timestamp(time) <= '2001-01-05T01:00:00'
|
|
GROUP BY MetricMinuteTs
|
|
ORDER BY MetricMinuteTs DESC;
|