teradata row_number() over(按 X 分区,按 Z desc 排序 Y)= 1
teradata row_number() over(partition by X , Y order by Z desc) = 1
我经常在Teradata中使用这个SQL助手:
row_number() over(partition by X||Y order by Z desc) = 1
我的同事使用相同的BUT,不同的是他没有输入“||”在两个属性之间,他只是输入一个“,”。我用两者测试了一些小数据,但在输出中没有发现任何差异。
我的假设是使用“||”是两个属性(X 和 Y)的串联。这是真的还是假的?
现在有人知道“||”之间有什么区别吗?和“,”在此命令中?
非常感谢..
两者非常相似。但是,带逗号 的版本 是正确的(对于大多数用途)。考虑在这些情况下会发生什么:
X Y
A BC
AB C
串联版本会将它们合并为 "ABC",但您可能不想这样做。逗号版本将值视为 ('A', 'BC') 和 ('AB', 'C'),因此它们是分开的——就像您所做的 group by X, Y
.
仅当您确实有意将这些值连接在一起。
我经常在Teradata中使用这个SQL助手:
row_number() over(partition by X||Y order by Z desc) = 1
我的同事使用相同的BUT,不同的是他没有输入“||”在两个属性之间,他只是输入一个“,”。我用两者测试了一些小数据,但在输出中没有发现任何差异。
我的假设是使用“||”是两个属性(X 和 Y)的串联。这是真的还是假的?
现在有人知道“||”之间有什么区别吗?和“,”在此命令中?
非常感谢..
两者非常相似。但是,带逗号 的版本 是正确的(对于大多数用途)。考虑在这些情况下会发生什么:
X Y
A BC
AB C
串联版本会将它们合并为 "ABC",但您可能不想这样做。逗号版本将值视为 ('A', 'BC') 和 ('AB', 'C'),因此它们是分开的——就像您所做的 group by X, Y
.
仅当您确实有意将这些值连接在一起。