如何显式指定空GROUP BY子句实现无分组SQL聚合查询
显式指定空聚合的实现方法
你可以直接使用SQL标准定义的GROUP BY ()语法实现显式空聚合,该写法和无GROUP BY的隐式全表聚合逻辑完全等价,同时可以满足下游解析器检测GROUP BY关键词的需求。
写法对比
- 显式空聚合写法(含GROUP BY关键词,符合解析要求)
SELECT NULL AS Product, SUM(Revenue) FROM Sales GROUP BY ()
- 原有隐式聚合写法(无GROUP BY关键词)
SELECT NULL AS Product, SUM(Revenue) FROM Sales
效果验证
两种写法的执行结果完全一致,可参考以下测试用例:
WITH Sales (Product, Revenue) AS (VALUES ('a',10),('b',20)) select NULL Product, SUM(Revenue) from Sales;
执行输出:
┌─────────┬──────────────┐ │ product ┆ sum(revenue) │ ╞═════════╪══════════════╡ │ ┆ 30 │ └─────────┴──────────────┘
使用GROUP BY ()的写法执行后会得到完全相同的输出,不需要调整其他查询逻辑。
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

