SQL计算上/下界 - 哪条路是正确的?

问题描述 投票:0回答:1

我很新的这一点,并正在读一本书上的数据分析,我一直停留在如何理解它的计算顺序值的上限和下限范围内 - 我一定是现在回来到这个网页了一会儿。

我用EXCEL所有的时间,我想我可能会更好打字出来到Excel中,并试图在那里了解它,将它分解成块,看什么我可以从推断。

我已经成功地正确地计算出它在Excel中,但仍奋力完全掌握它(我有没有正规的数学训练!)然后我意识到对我来说这是一个有点令人费解到轮得到我的头,也许我可以做它不同的方法。

下面的结果是代码的两个版本相同(据我可以看到),但我的版本是我更容易阅读和理解。

任何一个可以告诉我,为什么这是行不通的?如果它是不正确的?任何为什么呢?

图书版本的方法

SELECT lowerbound
    ,upperbound
    ,count(*) AS numorders
    ,min(val)
    ,max(val)
FROM (
    SELECT (floor(val / power(10.0, sign(numdigits) * (numdigits - 1))) * power(10.0, sign(numdigits) * (numdigits - 1))) AS lowerbound
        ,(floor(1 + (val / power(10.0, sign(numdigits) * (numdigits - 1)))) * power(10.0, sign(numdigits) * (numdigits - 1))) AS upperbound
        ,o.*
    FROM (
        SELECT (len(cast(floor(abs(totalprice)) AS INT)) * sign(floor(totalprice))) AS numdigits
            ,totalprice AS val
        FROM orders o
        ) o
    ) o
GROUP BY lowerbound
    ,upperbound
ORDER BY lowerbound

我的版本

SELECT lowerbound
    ,upperbound
    ,count(*) AS numorders
    ,min(val)
    ,max(val)
FROM (
    SELECT (left(totalprice,1)*power(10,len(floor(totalprice))-1))/1000 AS lowerbound
        ,((left(totalprice,1)+1)*power(10,len(floor(totalprice))-1))/1000 AS upperbound
        ,totalprice as val
        from orders) o
GROUP BY lowerbound
     ,upperbound
ORDER BY lowerbound
sql histogram correctness
1个回答
0
投票

你为什么不一起去敏和特定列的最大值,所以您将获得上限和下限

© www.soinside.com 2019 - 2024. All rights reserved.