gpt4 book ai didi

sql - 在 Teradata 中,ROWS UNBOUNDED PRECEDING 用于什么?

转载 作者:行者123 更新时间:2023-12-03 08:31:12 24 4
gpt4 key购买 nike

我刚刚开始使用 Teradata,我在 Teradata 中遇到了一个名为“无界行数”的有序分析函数。我尝试了几个站点来了解该功能,但所有站点都使用了一个复杂的示例来解释相同的内容。
你能否给我提供一个简单的例子,以便我能够清楚地了解基础知识?

最佳答案

它是窗口函数的“框架”或“范围”子句,它们是 SQL 标准的一部分,并在包括 Teradata 在内的许多数据库中实现。

一个简单的例子是计算三天框架内的平均金额。我在示例中使用了 PostgreSQL 语法,但对于 Teradata 也是一样的:

WITH data (t, a) AS (
VALUES(1, 1),
(2, 5),
(3, 3),
(4, 5),
(5, 4),
(6, 11)
)
SELECT t, a, avg(a) OVER (ORDER BY t ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
FROM data
ORDER BY t

...产生:

t  a  avg
----------
1 1 3.00
2 5 3.00
3 3 4.33
4 5 4.00
5 4 6.67
6 11 7.50

如您所见,每个平均值都是在由前一行 ( 1 preceding ) 和后续行 ( 1 following ) 之间的范围组成的有序帧“上”计算得出的。

当你写 ROWS UNBOUNDED PRECEDING ,那么框架的下界就是无穷大。这在计算总和(即 "running totals" )时很有用,例如:

WITH data (t, a) AS (
VALUES(1, 1),
(2, 5),
(3, 3),
(4, 5),
(5, 4),
(6, 11)
)
SELECT t, a, sum(a) OVER (ORDER BY t ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM data
ORDER BY t

屈服...

t  a  sum
---------
1 1 1
2 5 6
3 3 9
4 5 14
5 4 18
6 11 29

Here's another very good explanations of SQL window functions .

关于sql - 在 Teradata 中,ROWS UNBOUNDED PRECEDING 用于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30861919/

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