Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Ещё точнее Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 14:37 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Павел Воронцов, а теперь вот так проверьте результат: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 14:44 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Konst_One, Ну уж перевести идентификатор в одинал - сами, сами... Чай не бином Ньютона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 15:01 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Павел ВоронцовKonst_One, Ну уж перевести идентификатор в одинал - сами, сами... Чай не бином Ньютона вот ТСу об этом и пытаемся донести ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 15:08 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
tip78думаю такой индекс будет только мешать: авторprimary key (ID, CarModel) Вообще, в реальной жизни ToyotaModels это - результат выборки (CTE) из трех таблиц (Ярис, королла, камри) Первичный ключ я здесь сделал, так сказать, для красоты.:) А почему он может мешать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 21:17 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Konst_Oneсортировка кастомная должна быть : Код: sql 1. 2. 3. 4. 5. 6. ну и далее сами Классный прием, спасибо. Буду иметь в виду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 21:18 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
nullinKopelly, как вариант, при пропусках тоже ок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Пытаюсь понять логику в первом CASE после THEN. А почему вместо "a.r < a.q - a.r + 1" нельзя просто инвертировать порядок, как это предложил Kopelly : Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 21:22 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Гордон Шамуэй А почему вместо "a.r < a.q - a.r + 1" Вернее, вместо того, чтобы суммировать кол-во строк по группе, и потом a.q - a.r + 1. Правда, если задаешь прямую и обратную последовательность, в этой промежуточной выборке нарушается последовательность ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 21:29 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
nullinKopelly, как вариант, при пропусках тоже ок: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Нравится Ваше решение Могли бы на пальцах объяснить логику: Код: sql 1. 2. 3. Как до этого вообще можно самому додуматься?))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 21:50 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Гордон Шамуэй, q - quantity количество По поводу логики: 2 * a.r - 1 вроде логично, 2 * (a.q - a.r + 1) - тоже. А вот 2 * (a.q - a.r) + 1 появляется в единственном случае, когда количество нечетное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 00:57 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Гордон ШамуэйВообще, в реальной жизни ToyotaModels это - результат выборки (CTE) из трех таблиц (Ярис, королла, камри) Первичный ключ я здесь сделал, так сказать, для красоты.:) А почему он может мешать? А этой темой, Вы решили пошебуршить улей? Впрочем вопрос - риторический. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 01:00 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Гордон ШамуэйПытаюсь понять логику в первом CASE после THEN. А почему вместо "a.r < a.q - a.r + 1" нельзя просто инвертировать порядок, как это предложил Kopelly : Код: sql 1. 2. Меньше ранжирующих операций, накладных расходов, но тяжелее понять потом, если этого трюка не иметь в закладках. По-этому действуйте с учетом того фактора, что потом(абстрактно, рассуждая) кому-то, может и самому потом поддерживать придется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 01:07 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
nullin, Все-таки, вот этот самый важный кусок я не понял( Можете подробно расписать? Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 01:59 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
nullinГордон ШамуэйВообще, в реальной жизни ToyotaModels это - результат выборки (CTE) из трех таблиц (Ярис, королла, камри) Первичный ключ я здесь сделал, так сказать, для красоты.:) А почему он может мешать? А этой темой, Вы решили пошебуршить улей? Впрочем вопрос - риторический. Да нет, действительно интересно чем может помешать первичный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 02:00 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
nullinГордон ШамуэйПытаюсь понять логику в первом CASE после THEN. А почему вместо "a.r < a.q - a.r + 1" нельзя просто инвертировать порядок, как это предложил Kopelly : Код: sql 1. 2. Меньше ранжирующих операций, накладных расходов, но тяжелее понять потом, если этого трюка не иметь в закладках. По-этому действуйте с учетом того фактора, что потом(абстрактно, рассуждая) кому-то, может и самому потом поддерживать придется. Насчет меньше накладных расходов - ок, но вот для легкости чтения кода - как по мне, такая прямая и обратная нумерация нагляднее, чем трюк с суммированием строк, вычитанием и прибавлением единицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 02:04 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
AkinaГордон Шамуэйчтобы сначала шли первые значения ID для моделей Toyota Yaris, Toyota Camry, Toyota Corolla, затем последние, затем опять первые и т. д. Формально это в рамках одной группы (модели) соответствует такой сортировке: Код: sql 1. Если реверсировать первое выражение, и добавить сортировку по модели - получится то, что требуется. Какой интересный способ. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 02:19 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
Гордон Шамуэйnullin, Все-таки, вот этот самый важный кусок я не понял( Можете подробно расписать? Код: sql 1. 2. 3. a.r - прямая нумерация, a.q - a.r + 1 - это по сути обратная нумерация. Каждая нечетная пронумерованная строчка будет на 2 позиции дальше предыдущей(1,3,5...), т.к. через раз берется ид с обратной стороны(2,4,6...) четные строки. Так бы оно и шло, если бы интервал прямой нумерации не начал перекрывать интервал обратной - очевидно это ровно после пересечения середины таблицы произойдет (за 5 идет 7, там где уже 6 по нисходящей начинает идти обратная последовательность) - отсюда и сравнение. На примере первый интервал 1,3,5 для строк 1,2,3; второй 2,4,6(см. снизу для камри) для 6,5,4. Для нечетного количества строк, интервалы сойдутся в серединной строке, поэтому там можно взять результат для первого случая. Кстати, пока вот это расписывал, понял, что одна строка в кейсе лишняя))) Код: sql 1. 2. Вот так надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 02:49 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
поинтересуюсь, Гордон Шамуэй, а это у Вас тестовое задание такое на 5 минут, что-ли??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 02:58 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
nullinГордон Шамуэйnullin, Все-таки, вот этот самый важный кусок я не понял( Можете подробно расписать? Код: sql 1. 2. 3. a.r - прямая нумерация, a.q - a.r + 1 - это по сути обратная нумерация. Каждая нечетная пронумерованная строчка будет на 2 позиции дальше предыдущей(1,3,5...), т.к. через раз берется ид с обратной стороны(2,4,6...) четные строки. Так бы оно и шло, если бы интервал прямой нумерации не начал перекрывать интервал обратной - очевидно это ровно после пересечения середины таблицы произойдет (за 5 идет 7, там где уже 6 по нисходящей начинает идти обратная последовательность) - отсюда и сравнение. На примере первый интервал 1,3,5 для строк 1,2,3; второй 2,4,6(см. снизу для камри) для 6,5,4. Для нечетного количества строк, интервалы сойдутся в серединной строке, поэтому там можно взять результат для первого случая. Кстати, пока вот это расписывал, понял, что одна строка в кейсе лишняя))) Код: sql 1. 2. Вот так надо. Спасибо большое) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 15:12 |
|
||
|
Пронумеровать строки по определенному алгоритму
|
|||
|---|---|---|---|
|
#18+
nullinпоинтересуюсь, Гордон Шамуэй, а это у Вас тестовое задание такое на 5 минут, что-ли??? Задачка в целях обучения. Да вот не на 5 минут:) Два дня бился, потом решил обратиться к специалистам на этот форум) Спасибо большое всем, кто откликнулся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2018, 15:14 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39636382&tid=1689842]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 380ms |

| 0 / 0 |
