|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
Добрый день ! Не нашел разора алгоритма в описании синтаксиса 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 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 12:52 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
pudoff По какому принципу происходит сортировка второго числового столбца, в случае если он не указан в конструкции ORDER BY, сортировка только по тем выражениям, которые в ордер бай pudoff По какому принципу выводятся значения столбца My_data , который не ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 13:06 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
pudoff По какому принципу выводятся значения столбца My_data , который не находится в конструкции order by ? Хочешь предсказуемый результат - указывай детерминированный order by. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 13:12 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
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. Хорошо, выполнив запрос я понял результат. Но вот если я сижу на экзамене я не могу нигде выполнить запрос, соответственно мне надо понимать как именно это работает чтобы правильно ответить на вопрос. А пока кроме как запомнить варианта нет. И не факт что в реальном экзамене такой вопрос будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:01 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:14 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
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.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:14 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:19 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
pudoff Elic Хочешь предсказуемый результат - указывай детерминированный order by. если для записей с ID = 1 все понятно они идут вначале по порядку, Не по порядку. В частном случае с табличкой из одного блока Вы можете наблюдать спецэффекты вроде предполагаемой Вами "упорядоченности" хранения данных в heap-organized таблице. Но как "опытный sqlщик" должны понимать, что результат запроса недетерминирован и Вы можете получить в ответ что угодно, тем более с завязкой на rownum. Для разнообразия поменяйте порядок вставки записей в таблицу и порадуйтесь результату. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:20 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
-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. как раз смысл запроса чтобы разбить на партии с одинаковым значением "partition by id " и он именно возвращает 4, сколько бы я ра его не выполнял и почему-то в примере вопроса к оракловому экзамену это есть, и запрос действительно возвращает 4 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:23 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
pudoff как раз смысл запроса чтобы разбить на партии с одинаковым значением "partition by id " ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:25 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
pudoff как раз смысл запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:26 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
andrey_anonymous pudoff пропущено... если для записей с ID = 1 все понятно они идут вначале по порядку, Не по порядку. В частном случае с табличкой из одного блока Вы можете наблюдать спецэффекты вроде предполагаемой Вами "упорядоченности" хранения данных в heap-organized таблице. Но как "опытный sqlщик" должны понимать, что результат запроса недетерминирован и Вы можете получить в ответ что угодно, тем более с завязкой на rownum. Для разнообразия поменяйте порядок вставки записей в таблицу и порадуйтесь результату. Этож вопрос из примера сертификационного экзамена в вопросе дана последовательность инсерта записей. Я просто пытаюсь понять какой логики придерживаться если будет похожий вопрос, но с другими значениями либо другой последовательностью ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:26 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
pudoff Этож вопрос из примера сертификационного экзамена ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:27 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
pudoff какой логики придерживаться если будет похожий вопрос, но с другими значениями либо другой последовательностью Вам уже объяснили. Случайной, ибо недетерминирован. А что касается экзамена - то есть два соображения: - вопросы сертификационных экзаменов не публичны. Максимум, что Вы можете найти в тырнетах - т.н. "брейндампы", которые не тождественны экзаменационным вопросам. - часть вопросов экзамена содержат различные подковырки, которые надо уметь видеть и понимать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:31 |
|
Алгоритм сортировки и вывод числовых значений второго поля, не указанного в ORDER By
|
|||
---|---|---|---|
#18+
Elic pudoff Этож вопрос из примера сертификационного экзамена Приложение на андроид нашел с примерами сертификационного экзамена 1Z0-071 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.11.2019, 15:31 |
|
|
start [/forum/topic.php?fid=52&msg=39885317&tid=1881904]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 168ms |
0 / 0 |