gpt4 book ai didi

PostgreSQL 有没有办法将结果平均为有限数量的最终结果?

转载 作者:行者123 更新时间:2023-11-29 12:22:06 25 4
gpt4 key购买 nike

让我尝试通过示例来解释我的意思:

我正在使用 PostgreSQL 版本 9.2.1

数据结构如下:

(timedate)date           | (float) data    |  ...
"2013-03-23 03:58:00-04" | 66819.59 | ...
"2013-03-23 03:59:00-04" | 64277.22 | ...
"2013-03-23 03:59:00-04" | 46841.75 | ...
"2013-03-23 04:00:00-04" | 69697.38 | ...
"2013-03-23 04:00:00-04" | 69452.69 | ...
"2013-03-23 04:01:00-04" | 69697.47 | ...

我的表有超过 500 万个数据点。我已经知道如何在开始日期和结束日期范围内抓取数据。

这是我的问题:当范围太大时,假设它覆盖了整个数据,它将返回所有 500 万行,我想在不遗漏任何数据的情况下限制它返回的行.

例如,如果我想返回 5 行,我希望第一行是前一百万行数据的平均值。第二行是第二百万行数据的平均值等等。(显然这个例子有点极端,我只是夸张地尝试传达我需要做的事情)

感谢您的帮助和建议!

最佳答案

如果你想要日平均值:

select
date_trunc('day', "date")::date "day",
avg("data") "data"
from t
group by 1
order by 1

根据需要将 'day' 更改为 'month''week'

http://www.postgresql.org/docs/current/interactive/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC

如果你真的想把数据分成 5 个按日期排序的 block :

select
floor(
(row_number() over(order by "date"))::double precision
* 5
/ (select count(*) from t)
) chunk,
avg("data") "data"
from t
group by 1
order by 1

关于PostgreSQL 有没有办法将结果平均为有限数量的最终结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16068303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com