GROUP BY -ing 在 +1 的日期有什么作用?

What does GROUP BY -ing on a date with +1 do?

我在分析别人的代码时偶然发现了这样的查询:

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

此查询与以下查询有何不同?

SELECT ...
FROM ...
GROUP BY date_field

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

逻辑上没有区别。原始代码可能是这样的:

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

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

但是,

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

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