SQL вычисляет верхний / нижний предел - какой путь правильный? - PullRequest
0 голосов
/ 10 февраля 2019

Я довольно новичок в этом и читаю книгу по анализу данных, я застрял в понимании того, как он вычисляет верхнюю и нижнюю границы диапазонов значений порядка - я должен был вернуться на эту страницу дляв то время как сейчас.

Я все время использую 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

1 Ответ

0 голосов
/ 10 февраля 2019

Почему бы вам не использовать Min и Max определенного столбца, чтобы получить верхнюю и нижнюю границу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...