Sql 限定和(1)对(按前面无边界的行划分)=1的影响?

Sql 限定和(1)对(按前面无边界的行划分)=1的影响?,sql,teradata,window-functions,Sql,Teradata,Window Functions,我有两个几乎相似的问题: SELECT * FROM table QUALIFY SUM(1) OVER (PARTITION BY id_field ROWS UNBOUNDED PRECEDING) = 1; 及 我无法解释为什么前面的行没有限制对查询有任何影响 对我来说,似乎两个查询都会产生相同的结果,因为SUM函数没有使用表中的任何列,因此前面的行无界不会影响SUM 但实际上,当我执行第一个查询时,第一个查询产生的结果行比第二个查询多 两个查询之间的区别是什么?前面的无边界行对这个特定

我有两个几乎相似的问题:

SELECT *
FROM table
QUALIFY SUM(1) OVER (PARTITION BY id_field ROWS UNBOUNDED PRECEDING) = 1;


我无法解释为什么前面的
行没有限制
对查询有任何影响

对我来说,似乎两个查询都会产生相同的结果,因为SUM函数没有使用表中的任何列,因此前面的行无界不会影响SUM

但实际上,当我执行第一个查询时,第一个查询产生的结果行比第二个查询多


两个查询之间的区别是什么?前面的无边界行对这个特定限定有什么影响?

第一个查询返回每个分区的第一行。
它具有“运行总计”逻辑。
第一行的总和为1,第二行为2,第三行为3,以此类推

第二个查询从只有一行的分区返回行


这将为您提供每个id_字段的最后一条记录

SELECT   *
FROM     table
QUALIFY  row_number() OVER (PARTITION BY id_field order by ... desc) = 1
;

您实际想做什么?
前面的行无限制
没有
排序依据
?我试图根据另一列的最新日期为每个不同的id_字段获取一行。最初的查询有一个ORDER BY date字段,但我在问题中删除了它,以便关注为什么查询结果中的行数不同。只需将总和移动到Select claus中,您就会看到计算结果。
SELECT   *
FROM     table
QUALIFY  row_number() OVER (PARTITION BY id_field order by ... desc) = 1
;