Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Решаю задачку Есть исходные данныеКод ТТ Код продукции Дата ЦенаКод ТТ1 SKU1 2014-01-01 100Код ТТ1 SKU1 2014-01-02 110Код ТТ1 SKU1 2014-01-03 100Код ТТ1 SKU1 2014-01-04 100Код ТТ1 SKU1 2014-01-05 120Код ТТ1 SKU1 2014-01-08 120Код ТТ1 SKU1 2014-01-10 100Код ТТ1 SKU2 2014-01-01 100Код ТТ1 SKU2 2014-01-02 100Код ТТ1 SKU2 2014-01-03 90Код ТТ1 SKU2 2014-01-04 80Код ТТ1 SKU2 2014-01-05 90Код ТТ2 SKU1 2014-01-01 100Код ТТ2 SKU1 2014-01-02 100Код ТТ2 SKU1 2014-02-03 80Код ТТ2 SKU1 2014-02-04 90Код ТТ2 SKU1 2014-02-05 80Код ТТ2 SKU1 2014-03-08 100 Нужно получить такой результатКод ТТ Код продукции Дата Цена Отметка Код ТТ1 SKU1 2014-01-01 100 0Код ТТ1 SKU1 2014-01-02 110 1 Код ТТ1 SKU1 2014-01-03 100 0Код ТТ1 SKU1 2014-01-04 100 0Код ТТ1 SKU1 2014-01-05 120 0Код ТТ1 SKU1 2014-01-08 120 0Код ТТ1 SKU1 2014-01-10 100 0Код ТТ1 SKU2 2014-01-01 100 0Код ТТ1 SKU2 2014-01-02 100 0Код ТТ1 SKU2 2014-01-03 90 0Код ТТ1 SKU2 2014-01-04 80 0Код ТТ1 SKU2 2014-01-05 90 0Код ТТ2 SKU1 2014-01-01 100 0Код ТТ2 SKU1 2014-01-02 100 0Код ТТ2 SKU1 2014-02-03 80 0Код ТТ2 SKU1 2014-02-04 90 1 Код ТТ2 SKU1 2014-02-05 80 0Код ТТ2 SKU1 2014-03-08 100 0 Написал SQL-запрос. SQL-запрос Код: 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. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 15:35 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
ferzmikk, Очень много лишней работы.... На всё про всё - нужен один lead, один lag и case ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 15:47 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
ferzmikk, Partition by [Код ТТ], [Код продукции] - уже делит всё исходное множество на группы с одинаковым "вектором" ([Код ТТ], [Код продукции]). Поэтому проверять в рамках группы равенство предыдущих и последующих [Код ТТ], [Код продукции] - бессмысленно. Они априори будут одинаковы. Стало быть, все что нужно - это получить предыдущее - следующее значение цены и проверять их на равенство. Первую / последнюю строку в секции определять по IS NULL-ности одного из значений [lead | lag]: для первой строки в секции lag is null, для последней строки в секции - lead is null... вот именно потому вам и нужен ровно один lag, ровно один lead и ровно один case для проверок всех "крайних" и "промежуточных" условий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 16:43 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
А это вообще за гранью добра и зла. Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 16:49 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
Руслан ДамировичА это вообще за гранью добра и зла. Код: sql 1. 2. 3. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 20:14 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
Щукина АннаPartition by [Код ТТ], [Код продукции] - уже делит всё исходное множество на группы с одинаковым "вектором" ([Код ТТ], [Код продукции]). Поэтому проверять в рамках группы равенство предыдущих и последующих [Код ТТ], [Код продукции] - бессмысленно. Они априори будут одинаковы. Без этого в сравнение может попасть предыдущая или следующая строка другой [Код ТТ] и/или [Код продукции]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 20:52 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
Щукина АннаНа всё про всё - нужен один lead, один lag и case Сложно представляю пока как должен выглядеть код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 21:21 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
ferzmikkСложно представляю пока как должен выглядеть код Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 22:04 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
ferzmikkЩукина АннаPartition by [Код ТТ], [Код продукции] - уже делит всё исходное множество на группы с одинаковым "вектором" ([Код ТТ], [Код продукции]). Поэтому проверять в рамках группы равенство предыдущих и последующих [Код ТТ], [Код продукции] - бессмысленно. Они априори будут одинаковы. Без этого в сравнение может попасть предыдущая или следующая строка другой [Код ТТ] и/или [Код продукции].вы процитированное вами моё сообщение про partition прочитали? смысл написанного осознали? На всякий случай повторюсь - предложение partition by разбивает всю выборку на отдельные секции (считайте, что это аналог group by для агрегатных функций). Оконная функция ВСЕГДА работает в рамках текущей секции, так же как и агрегатная всегда считает агрегаты в рамках заданного условия group by. Если вы указали Partition by [Код ТТ], [Код продукции], то оконная функция физически не сможет увидеть "предыдущая или следующая строка другой [Код ТТ] и/или [Код продукции]", так как она заведомо ограничена рамками секции, задаваемыми сочетанием значений пар ([Код ТТ] и [Код продукции]). В интернете много информации по логике работы оконных функций. Почитайте. Всё доступно расписано. Не думаю, что мне удастся объяснить вам более доступно.... Но если что - обращайтесь. Постараюсь всё "разжевать" и "показать на пальцах" Для начала проштудируйте эту статью . Пусть вас не смущает, что она по ораклу, а функции там называют "аналитическими". Это так исторически сложилось... Суть и логика реализации от этого - не меняется. Оно одинаково работает что в оракле, что в мс скл, что в DB/2 и прочих СУДБ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2018, 05:55 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
invmferzmikkСложно представляю пока как должен выглядеть код Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. А как правильно добавить следующую запись Код: sql 1. чтобы получить следующий результат? Нужно получить такой результатКод ТТ Код продукции Дата Цена Отметка ID Код ТТ1 SKU1 2014-01-01 100 01Код ТТ1 SKU1 2014-01-02 110 1 NULL Код ТТ1 SKU1 2014-01-03 100 02Код ТТ1 SKU1 2014-01-04 100 03Код ТТ1 SKU1 2014-01-05 120 04Код ТТ1 SKU1 2014-01-08 120 05Код ТТ1 SKU1 2014-01-10 100 06Код ТТ1 SKU2 2014-01-01 100 01Код ТТ1 SKU2 2014-01-02 100 02Код ТТ1 SKU2 2014-01-03 90 03Код ТТ1 SKU2 2014-01-04 80 04Код ТТ1 SKU2 2014-01-05 90 05Код ТТ2 SKU1 2014-01-01 100 01Код ТТ2 SKU1 2014-01-02 100 02Код ТТ2 SKU1 2014-02-03 80 03Код ТТ2 SKU1 2014-02-04 90 1 NULL Код ТТ2 SKU1 2014-02-05 80 04Код ТТ2 SKU1 2014-03-08 100 05 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2018, 08:14 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
ferzmikk, в partition by добавляете отметку, а сам row_number() убираете внутрь кейса по полю отметка. идея понятна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2018, 08:23 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
Посетительferzmikk, в partition by добавляете отметку, а сам row_number() убираете внутрь кейса по полю отметка. идея понятна? Нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2018, 08:47 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
ferzmikk, печально. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2018, 08:54 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
ferzmikk , и вообще, зачем вам вот это? Код: sql 1. дата изначально в строковом формате что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2018, 08:56 |
|
||
|
Правильное использование оконных функции
|
|||
|---|---|---|---|
|
#18+
Посетительferzmikk , и вообще, зачем вам вот это? Код: sql 1. дата изначально в строковом формате что ли? Да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2018, 12:23 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=146&tid=1689566]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 270ms |
| total: | 414ms |

| 0 / 0 |
