MySQL支持像oracle一样的部分汇总吗?

时间:2016-04-06 12:19:22

标签: mysql oracle

正如oracle doc所说它支持部分汇总:

  

部分汇总   您也可以汇总,以便只包含部分小计。此部分汇总使用以下语法:

     

GROUP BY expr1,ROLLUP(expr2,expr3);

     

在这种情况下,GROUP BY子句在(2 + 1 = 3)聚合级别创建小计。也就是说,在级别(expr1,expr2,expr3),(expr1,expr2)和(expr1)。

http://docs.oracle.com/cd/E11882_01/server.112/e25554/aggreg.htm#DWHSG8612

MySQL是否支持此功能?

我试图在MySQL文档中搜索并找不到任何线索。

1 个答案:

答案 0 :(得分:1)

with rollup clause上的Mysql文档非常清楚:您无法为rollup子句提供列表,以指示您希望执行摘要的级别。

您可以做的是在子查询中使用rollup子句进行查询,在外部查询中可以删除那些不需要的聚合行(或者您可以在客户端应用程序中执行此操作)。你不能在having子句中这样做,因为

  

因为超级聚合行中的NULL值被放入   在查询处理这么晚的阶段设置结果,你不能   在查询本身中将它们作为NULL值进行测试。例如,你   无法将HAVING产品IS NULL添加到查询中以消除   输出除超级聚合行之外的所有行。

     

另一方面,NULL值在客户端上显示为NULL   可以使用任何MySQL客户端编程进行测试   接口