Интересная ошибка Row_Number () - PullRequest
1 голос
/ 10 июня 2010

Я играл с Stack Exchange Data Explorer и выполнил этот запрос:
https://data.stackexchange.com/stackoverflow/query/2820/rising-stars-top-50-users-ordered-on-rep-per-day

Обратите внимание на результаты, строки 11 и 12 имеют одинаковое значение ипоэтому они неправильно пронумерованы, хотя функция row_number () принимает тот же порядок по параметру, что и запрос.

Я знаю, что правильное решение здесь состоит в том, чтобы указать дополнительный столбец разрешения конфликтов в предложениях по предложениям, но мне более любопытно, почему / как функция row_number () возвращала разные результаты для тех же данных?

Если это что-то меняет, это работает в Azure.

Ответы [ 4 ]

3 голосов
/ 10 июня 2010

Они не пронумерованы - ваш ORDER BY для другого столбца.Хотя они в конечном итоге оценивают одно и то же значение, ORDER BY в ROW_NUMBER не следует рассматривать синхронно с ORDER BY для запроса.

2 голосов
/ 10 июня 2010

Проблема, кажется, со значительными цифрами.Например, у Polygenelubricants 22281 репутации, полученной за 101 день, а у KennyTM 39257 репутации, полученной за 178 дней.Целая часть обоих RepPerDays - 220, но плавающее значение Reputation / Days для полигеномасляных смазок - 220.603 ####, а для KennyTM - 220.544 ####.

. Попробуйте попробовать по Reputation / Daysоба раза.

0 голосов
/ 10 июня 2010

Как DENSE_RANK, RANK и ROW_NUMBER сравниваются в этом запросе - все еще несовместимое поведение?

ROW_NUMBER (), очевидно, назначается первым, но ORDER BY не указывает, чтовыходные данные сортируются по ROW_NUMBER, поэтому выходные данные могут выводиться в любом порядке.

Сделайте это:

ORDER BY
RepPerDays DESC, Row_number() OVER(ORDER BY Reputation/Days DESC)​

И упорядочено по совпадению.

0 голосов
/ 10 июня 2010

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

...