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