Рассмотрим следующий пример:Oracle поведение неожиданным сортировки
CREATE TABLE TestPersons
(
PersonID int,
Name varchar(255),
FirstName varchar(255),
Address varchar(255)
)
insert into TestPersons(PersonID, Name, FirstName , Address) Values (1, 'name1', 'firstname1', 'adress1');
insert into TestPersons(PersonID, Name, FirstName , Address) Values (2, 'name2', 'firstname2', 'adress2');
insert into TestPersons(PersonID, Name, FirstName , Address) Values (3, 'name3', 'firstname3', 'adress3');
insert into TestPersons(PersonID, Name, FirstName , Address) Values (4, 'name4', 'firstname4', 'adress4');
Первый запрос (отлично работает):
SELECT name, firstname, personid, count(name), row_number() over (ORDER BY name, firstname) as rn
FROM testpersons
GROUP BY name, firstname, personid
возвращается:
name1 firstname1 1 1 1
name2 firstname2 2 1 2
name3 firstname3 3 1 3
name4 firstname4 4 1 4
Второй запрос (неожиданный результат) :
SELECT name, firstname, personid, count(name), row_number() over (ORDER BY name desc, firstname desc) as rn
FROM testpersons
GROUP BY name, firstname, personid
возвращает для всех строк NAME4 и firstname4:
name4 firstname4 4 1 1
name4 firstname4 3 1 2
name4 firstname4 2 1 3
name4 firstname4 1 1 4
Я бы ожидать, измененный порядок результата с первым запросом.
Любая идея, почему?
Выход select * from v$version
выглядит следующим образом:
Oracle Database 12c Release 12.1.0.1.0 - 64bit Production 0
PL/SQL Release 12.1.0.1.0 - Production 0
"CORE 12.1.0.1.0 Production" 0
TNS for 64-bit Windows: Version 12.1.0.1.0 - Production 0
NLSRTL Version 12.1.0.1.0 - Production 0
Мне сложно понять, как ваш второй запрос когда-либо произведет эти результаты ... Возможно, вы можете создать скрипку, демонстрирующую вашу проблему. – sgeddes
Fiddle не работает для oracle somehy, вот почему я прикрепил код, все, что вам нужно, это запустить его – CloudyMarble
Не уверен, что происходит с 'oracle' на скрипке, но это работает с использованием другой базы данных, которая поддерживает' window functions': http: //sqlfiddle.com/#!15/7fb5d/1 – sgeddes