powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
16 сообщений из 16, страница 1 из 1
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885235
pudoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день !

Не нашел разора алгоритма в описании синтаксиса ORDER BY, решил спросить у опытных sqlщиков.

По какому принципу происходит сортировка второго числового столбца,
в случае если он не указан в конструкции ORDER BY,
при условии одного и того же значения столбца по которому происходит сортировка.

Чтоб понять вопрос, возьмем стандартный тестовый пример :

CREATE TABLE my_table
(my_data NUMBER,
id NUMBER)

Заполним таблицу значениями:

INSERT INTO my_table
VALUES(1,1);
INSERT INTO my_table
VALUES(2,2);
INSERT INTO my_table
VALUES(3,1);
INSERT INTO my_table
VALUES(4,2);
INSERT INTO my_table
VALUES(5,1);

Сделаем запрос и отсортируем по полю id:

SELECT *
FROM tmp$my_table a
order by id

Получаем:

My_data ID
1 1
3 1
5 1
4 2
2 2

Почему сначала выводится строка с My_data = 4 и ID = 2, а не My_data = 2 и ID = 2 ?
При этом значения My_data у которых значение столбца ID =1 сортируются нормально по возрастанию.
По какому принципу выводятся значения столбца My_data , который не находится в конструкции order by ?
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885239
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff
По какому принципу происходит сортировка второго числового столбца,
в случае если он не указан в конструкции ORDER BY,
ни по какому
сортировка только по тем выражениям, которые в ордер бай

pudoff
По какому принципу выводятся значения столбца My_data , который не
выводятся строки, они сортируются
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885241
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff
По какому принципу выводятся значения столбца My_data , который не находится в конструкции order by ?
Ни по какому.
Хочешь предсказуемый результат - указывай детерминированный order by.
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885290
pudoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
pudoff
По какому принципу выводятся значения столбца My_data , который не находится в конструкции order by ?
Ни по какому.
Хочешь предсказуемый результат - указывай детерминированный order by.


Хорошо, сформулирую сразу в лоб вопрос.
Он ведь в связи с чем возник: есть примеры к сертификационному оракловому экзамену.
Там дана эта таблица и следующий запрос


select analytics
from (
select rownum as my_row, lag(my_data) over ( partition by id order by id) analytics
FROM my_table a)
where my_row = 2

Запрос возвращает 4.
Т.е. он выбирает значение my_data предыдущей записи в партии ID, и сортирует по ID,
если для записей с ID = 1 все понятно они идут вначале по порядку,
то следующая запись с ID 2 идет та, у которой My_data = 4 (rownum = 4),
соответвенно т.к. она первая в партии, то предыдущего значение нет, поэтому lag выводит null, а в следующей записи с My_data = 2, lag возвращает 4.

Хорошо, выполнив запрос я понял результат. Но вот если я сижу на экзамене я не могу нигде выполнить запрос, соответственно мне надо понимать как именно это работает чтобы правильно ответить на вопрос.

А пока кроме как запомнить варианта нет. И не факт что в реальном экзамене такой вопрос будет.
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885293
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff
select analytics
from (
select rownum as my_row, lag(my_data) over ( partition by id order by id) analytics
FROM my_table a)
where my_row = 2

Запрос возвращает 4.
Правильный ответ - результат непредсказуем. В квадрате.
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885294
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff

Запрос возвращает 4.

почему 4?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
SQL> ed
Wrote file afiedt.buf

  1  with my_table(My_data,ID) as (
  2  select 1,  1 from dual union all
  3  select 3,  1 from dual union all
  4  select 5,  1 from dual union all
  5  select 4,  2 from dual union all
  6  select 2,  2 from dual)
  7  --select * from my_table
  8  select analytics
  9  from (
 10  select rownum as my_row, lag(my_data) over ( partition by id order by id) analytics
 11  FROM my_table a)
 12* where my_row = 2
SQL> /

 ANALYTICS
----------
         1

SQL>



.....
stax
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885300
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff

select analytics
from (
select rownum as my_row, lag(my_data) over ( partition by id order by id) analytics
FROM my_table a)
where my_row = 2

Запрос возвращает 4.
Запрос может вернуть любое из значений и еще null. Но, возможно, кто-то перепутал местами значения id и my_data - было бы логично, что id уникален. Тогда результат null.
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885302
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff
Elic

Хочешь предсказуемый результат - указывай детерминированный order by.

если для записей с ID = 1 все понятно они идут вначале по порядку,

Не по порядку.
В частном случае с табличкой из одного блока Вы можете наблюдать спецэффекты вроде предполагаемой Вами "упорядоченности" хранения данных в heap-organized таблице.
Но как "опытный sqlщик" должны понимать, что результат запроса недетерминирован и Вы можете получить в ответ что угодно, тем более с завязкой на rownum.
Для разнообразия поменяйте порядок вставки записей в таблицу и порадуйтесь результату.
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885305
pudoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-
pudoff

select analytics
from (
select rownum as my_row, lag(my_data) over ( partition by id order by id) analytics
FROM my_table a)
where my_row = 2

Запрос возвращает 4.
Запрос может вернуть любое из значений и еще null. Но, возможно, кто-то перепутал местами значения id и my_data - было бы логично, что id уникален. Тогда результат null.


как раз смысл запроса чтобы разбить на партии с одинаковым значением "partition by id " и он именно возвращает 4, сколько бы я ра его не выполнял и почему-то в примере вопроса к оракловому экзамену это есть, и запрос действительно возвращает 4
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885307
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff
как раз смысл запроса чтобы разбить на партии с одинаковым значением "partition by id "
А если id будет уникальным, то "партии" получатся с неодинаковым значением??
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885308
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff
как раз смысл запроса
Ты заблуждаешься.
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885310
pudoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
pudoff
пропущено...

если для записей с ID = 1 все понятно они идут вначале по порядку,

Не по порядку.
В частном случае с табличкой из одного блока Вы можете наблюдать спецэффекты вроде предполагаемой Вами "упорядоченности" хранения данных в heap-organized таблице.
Но как "опытный sqlщик" должны понимать, что результат запроса недетерминирован и Вы можете получить в ответ что угодно, тем более с завязкой на rownum.
Для разнообразия поменяйте порядок вставки записей в таблицу и порадуйтесь результату.


Этож вопрос из примера сертификационного экзамена в вопросе дана последовательность инсерта записей.
Я просто пытаюсь понять какой логики придерживаться если будет похожий вопрос, но с другими значениями либо другой последовательностью
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885311
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff
Этож вопрос из примера сертификационного экзамена
Где ты его украл?
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885316
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff
какой логики придерживаться если будет похожий вопрос, но с другими значениями либо другой последовательностью

Вам уже объяснили. Случайной, ибо недетерминирован.
А что касается экзамена - то есть два соображения:
- вопросы сертификационных экзаменов не публичны. Максимум, что Вы можете найти в тырнетах - т.н. "брейндампы", которые не тождественны экзаменационным вопросам.
- часть вопросов экзамена содержат различные подковырки, которые надо уметь видеть и понимать.
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885317
pudoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
pudoff
Этож вопрос из примера сертификационного экзамена
Где ты его украл?


Приложение на андроид нашел с примерами сертификационного экзамена 1Z0-071
...
Рейтинг: 0 / 0
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
    #39885318
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pudoff
Приложение на андроид нашел с примерами сертификационного экзамена 1Z0-071
Не надо полагаться на недостоверные источники.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]