在带有+1的日期上GROUP BY的做什么?

时间:2017-01-27 14:30:29

标签: sql teradata

我正在分析其他人的代码并偶然发现了这样的查询:

SELECT ...
FROM ...
GROUP BY date_field + 1

此查询与以下内容之间有何区别?

SELECT ...
FROM ...
GROUP BY date_field

如果两个查询的结果相同,那么它们在性能方面是否不同?提前谢谢。

1 个答案:

答案 0 :(得分:1)

逻辑上没有区别。原始代码可能有类似的内容:

select date_field + 1, . . .
from . . .
group by date_field + 1;

group by键然后直接匹配select中的表达式。但是,这不是必需的。 SQL支持group by键上的表达式,而+ 1不会影响结果。

可能会影响执行计划。我对Teradata中的优化引擎并不过分熟悉,但我想到了两件事:

  • 引擎可能无法识别它可以使用date_field上的索引。
  • 引擎可能会对聚合列的统计信息感到困惑,选择次优聚合算法。