页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 3 当前 »

(本文档仅供参考)

问题说明

在即席分析中可以新建计算字段,计算字段的设置项中有一个设置项“参与分组”,那么选择“自动”和“否”的时候有什么区别呢?

解析

如果选择”自动“,会依据即席查询中勾选的字段是否存在聚合操作,自动进行group by 嵌套,即:

1)其它字段有设置聚合(比如sum、count等)那么会把该计算字段拼接在外层的group by语句中分组

2)其它字段没有设置聚合,那么不会把该计算字段拼接在group by语句中分组

如果选择“否”:

1)其它字段有设置聚合(比如sum、count等),那么不会把该计算字段拼接在外层的group by语句中分组

2)其它字段没有设置聚合,那么会在生成的sql内层拼接group by语句,其中分组字段是除了该计算字段外的所有字段

这种主要是针对计算字段里面的表达式写上 sum(字段)+aaa这种情况,例如下面的sql

    select
        T471.`F0` as F472,
        T471.`F2` as F518,
        T471.`F6` as F474,
        T471.`F532` as F603
    from
        (select
            T10.`CategoryName` as F0,
            T11.`ProductName` as F2,
            T12.`Quantity` as F6,
            T12.`Quantity` * T12.`UnitPrice` *(1- T12.`Discount` ) +2 as F532   //计算字段
        from
            `orderdetails` T12
        inner join
            `products` T11
                on T12.`ProductID` = T11.`ProductID`
        inner join
            `categories` T10
                on T10.`CategoryID` = T11.`CategoryID`
        where
            T10.`CategoryName` is not null
        group by
            T10.`CategoryName`,
            T11.`ProductName`,
            T12.`Quantity`) T471 limit 1000


如果觉得不用内层加group by,其实这种情况就该把这个计算字段设置为“自动”解决,生成的sql就不带group by了。

  • 无标签