我对float/real
数据类型的聚合下推有问题。根据文档,“任何数据类型 <= 64 位”或 8 字节 () 支持聚合下推:
- 支持的聚合运算符有 MIN、MAX、SUM、COUNT、AVG
- 支持任何 <= 64 位的数据类型。例如,支持 bigint 是因为它的大小是 8 个字节,但不支持十进制 (38,6),因为它的大小是 17 个字节。此外,不支持字符串类型
- 聚合运算符必须位于 SCAN 节点或带有 group by 的 SCAN 节点之上
无论我做什么,它都不起作用。我尝试使列可以为空而不为空。分组和无分组。
我们在最新版本的 SQL Server 2016 (SP1-CU3) 上运行。我想知道有人经历过吗?这对我来说似乎是一个错误。我错过了什么吗?
如果您遇到同样的问题,请为我的 SQL Server 反馈请求点赞。现在我面临着将float
列转换为numeric
. 但是numeric
类型的操作通常比较慢。所以我可能在一个地方赢了,在另一个地方输了。我已成功测试numeric(15,12)
。
这是说明问题的脚本(请启用实际执行计划以查看问题):
DROP TABLE IF EXISTS dbo.TestTable;
CREATE TABLE dbo.TestTable
(
cKey INT NOT NULL
, cGroup INT NOT NULL
, cNumeric36_3 NUMERIC(36, 3) NULL
, …
Run Code Online (Sandbox Code Playgroud) performance sql-server aggregate columnstore sql-server-2016