|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Как добавить столбец, где будет ID следующего заказа? Должно быть вот так, первые две колонки из старой таблицы, а создать нужно третий столбец. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 18:35 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 19:41 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Akina, большое спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 20:27 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Akina, большое спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 20:31 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Akina, если не сложно, посмотрите, правильно ли я понимаю: PARTITION BY указывает по какой колонке разделяем на группы, т.е. ищем в рамках одного Customer. ORDER BY указывает на порядок, в котором будут обрабатываться OrderID. Так как здесь в порядке возрастания, то первое же значение, которое будет больше текущего будет записано? Или будет записан самый большой OrderID по клиенту? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 21:07 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Luna17 Так как здесь в порядке возрастания, то первое же значение, которое будет больше текущего будет записано? Или будет записан самый большой OrderID по клиенту? Partition определяет группу, к которой относится ТЕКУЩАЯ запись. Order by определяет, как следует отсортировать записи (всей!) группы, к которой относится ТЕКУЩАЯ запись. LEAD() возвращает значение, взятое из следующей записи для ТЕКУЩЕЙ записи (из её группы, в указанной сортировке). Это выполняется для каждой записи выходного набора. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 21:17 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Akina, меня смущает LEAD, ведь мне нужен следующий ID, а не максимальный в группе. Может можно взять LAG, и тогда ORDER BY OrderID DESC? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 21:18 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Luna17 меня смущает LEAD, ведь мне нужен следующий ID, а не максимальный в группе. Luna17 Может можно взять LAG, и тогда ORDER BY OrderID DESC? Да, LEAD(OrderId) OVER (PARTITION BY CustomerId ORDER BY OrderId) по результату эквивалентен LAG(OrderId) OVER (PARTITION BY CustomerId ORDER BY OrderId DESC) . Но последний - это почти наверняка плюс ещё одна сортировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 21:21 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Akina, ага вроде понятно, большое спасибо! А если в ID были бы буквы, ну в общем по ID нельзя сортировать. А у меня в старой таблице есть еще даты заказов, можно ли отсортировать по ним, но даты не выводить? вот так select CustomerID,OrderID ,lead(OrderID) over (partition by CustomerID order by OrderDate) from orders ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 21:23 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Luna17 А если в ID были бы буквы, ну в общем по ID нельзя сортировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 21:30 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Akina, изините за тупёж, пожалуйста, но не дошло Если OrderID не будет уникальным по дате сортировать нельзя? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 21:42 |
|
Прошу помощи новичку
|
|||
---|---|---|---|
#18+
Luna17 Если OrderID не будет уникальным по дате сортировать нельзя? Вот, скажем, пример - простое добавление индекса изменяет результат. Это и есть следствие неуникальности использованного выражения сортировки. А если там же сделать ORDER BY orderID, amount (бред, конечно, но на ПОКАЗАННЫХ данных это будет уникальная сортировка) - создание индекса не изменит результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2020, 21:53 |
|
|
start [/forum/topic.php?fid=47&gotonew=1&tid=1828761]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
12ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 308ms |
total: | 566ms |
0 / 0 |