Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
14.12.2005, 14:15
|
|||
|---|---|---|---|
KEEP (эдакая аналитическая функция) |
|||
|
#18+
Функция позволяет "запомнить" значение поля предыдущей строки, и использовать его в следующей. Код: plaintext 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. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 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. Код: plaintext 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. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. пример использования: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Считает сумму всех tableid нарастающим итогом, хотя она предназначена не для этого. На самом деле она предназначена только для хранения значения предыдущей строки . Подобного результата добиться с помощью аналитических функций непросто. Внимание! Чтобы получить сумму нарастающим итогом (или посчитать записи) следует использовать функцию counter, которую можно найти на этом же форуме. Очень важна фраза ORDER BY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2005, 14:29
|
|||
|---|---|---|---|
KEEP (эдакая аналитическая функция) |
|||
|
#18+
Кому лень (или не получается) скомпилить - DLL прилагается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2005, 15:12
|
|||
|---|---|---|---|
|
|||
KEEP (эдакая аналитическая функция) |
|||
|
#18+
Зашибись. "C" рулит Надо только почитать как собрать все это под Linux x86-64. P.S. "Нашел" у себя тут табличку, типа с полями CURR_VALUE,PREV_VALUE, сейчас получаеться можно все это "выбросить" (+код, который это "поддерживал") и просто использовать KEEP... Cпасибо большое gardenman'у ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2005, 15:20
|
|||
|---|---|---|---|
KEEP (эдакая аналитическая функция) |
|||
|
#18+
Как это... There is no any warranty... То бишь be careful... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2005, 16:50
|
|||
|---|---|---|---|
|
|||
KEEP (эдакая аналитическая функция) |
|||
|
#18+
2 gardemann >Функция позволяет "запомнить" значение поля предыдущей строки , и >использовать его в следующей что за ПРЕДЫДУЩАЯ строка такая? Данное поле описано как GENERATED и мы говорим о строке с максим. значением генератора или же о строке с макс. временем вставки, которое лепится на триггере и хранится отдельно? Об чем речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2005, 16:54
|
|||
|---|---|---|---|
|
|||
KEEP (эдакая аналитическая функция) |
|||
|
#18+
2 gardemann >Функция позволяет "запомнить" значение поля предыдущей строки , и >использовать его в следующей что за ПРЕДЫДУЩАЯ строка такая? Данное поле описано как GENERATED и мы говорим о строке с максим. значением генератора или же о строке с макс. временем вставки, которое лепится на триггере и хранится отдельно? Об чем речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2005, 17:08
|
|||
|---|---|---|---|
KEEP (эдакая аналитическая функция) |
|||
|
#18+
предположим у вас есть такая таблица: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. результат: Код: plaintext 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. понятно? я беру значение CNT из текущей строки и отнимаю от него значение CNT предыдущей. (т.е. получаю разницу между предыдущей и следующей). Такие вещи в простом SQL без курсоров не делаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2005, 17:47
|
|||
|---|---|---|---|
|
|||
KEEP (эдакая аналитическая функция) |
|||
|
#18+
2 gardemann я понял, что ф-ция keep НЕ требует упорядочиванию выборки. Другими словами (в вашем примере запрос неупорядочен): допустим, для данного случая манагер бд предоставит выборку так select * from test_keep ID CNT ----------- ----------- 6 1212 2 233 3 4545 5 44 1 10 keep(cnt) ---------- 0 1212 233 4545 44 Это так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2005, 18:09
|
|||
|---|---|---|---|
KEEP (эдакая аналитическая функция) |
|||
|
#18+
так. Упорядочивать нужно в соответствии с бизнес-логикой. WITH позволяет это делать внутри запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2005, 19:51
|
|||
|---|---|---|---|
|
|||
KEEP (эдакая аналитическая функция) |
|||
|
#18+
2 gardenman Надо уже FAQ писать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2005, 05:30
|
|||
|---|---|---|---|
KEEP (эдакая аналитическая функция) |
|||
|
#18+
2 gardemann Это делается и обычным SQL: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2005, 05:34
|
|||
|---|---|---|---|
KEEP (эдакая аналитическая функция) |
|||
|
#18+
Извините ошибочка вкралась: select a.id,a.cnt,coalesce(b.cnt,0), a. cnt - coalesce(b.cnt,0) from ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.12.2005, 11:19
|
|||
|---|---|---|---|
KEEP (эдакая аналитическая функция) |
|||
|
#18+
golsaИзвините ошибочка вкралась: select a.id,a.cnt,coalesce(b.cnt,0), a. cnt - coalesce(b.cnt,0) from ... В чем смысл знаете? А в том, что вся работа делается за один проход без лишнего I/O. Т.е. смысл - производительность. Прикиньте с какой скоростью будет работать то что вы написали, если в результирующей табличке порядка 100000 записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=43&tablet=1&tid=1605630]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 265ms |
| total: | 398ms |

| 0 / 0 |
