gpt4 book ai didi

sql - 对 SQL 查询中的具体行数进行分组

转载 作者:行者123 更新时间:2023-12-04 19:15:50 25 4
gpt4 key购买 nike

我想在没有任何特定标准的情况下对数据进行分组,只是每个结果组的数据数量。我有一张这样的表:

DATE              VAL1      VAL2
------------ ------ ------
01-01-2013 5 8
01-02-2013 14 23
01-03-2013 10 6
01-04-2013 21 88
01-05-2013 9 11
01-06-2013 4 9
01-07-2013 19 42
01-08-2013 8 4
01-09-2013 12 1
01-10-2013 2 8
01-11-2013 31 65
01-12-2013 3 6
...

例如,认为日期字段可以是数字而不是日期......

例如,我想要的是获取数据组的总和或平均值,其中组具有特定的行数(所有组的行数相同)。

例如,对于每组三行,我想要获得 VAL1 的总和和 VAL2 的平均值:
INTERVAL                  SUM VAL 1   AVG VAL 2
----------------------- --------- ---------
01-01-2013 - 01-03-2013 29 12.3
01-04-2013 - 01-06-2013 34 33.3
01-07-2013 - 01-09-2013 39 15.6
01-10-2013 - 01-12-2013 36 26.3
...

我真的认为可以用查询来做,但我找不到获得正确的“分组依据”句子的方法。有人可以帮助我吗?

非常感谢!

最佳答案

您可以使用 row_number 函数除以 3 为每组 3 个连续行分配唯一编号。然后,您可以在此组号上进行聚合。

select min("DATE") ||'-'||max("DATE"),
sum(val1),
avg(val2)
from (
select "DATE", val1, val2,
ceil(row_number() over (order by "date") / 3) as grp
from mytab
) as x
group by grp
order by grp;

关于sql - 对 SQL 查询中的具体行数进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20094696/

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