|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите пожалуйста, как сделать процедуру в базе, которая возвращает среднее значение работы сотрудника за час? Имеется таблица вида: USER_ID T_START T_STOPСотрудник 1 26.03.2018 11:24:11 26.03.2018 11:27:48Сотрудник 1 26.03.2018 11:27:53 26.03.2018 11:31:54Сотрудник 1 26.03.2018 11:31:54 26.03.2018 11:42:50Сотрудник 1 26.03.2018 12:59:00 26.03.2018 13:24:00 Где T_START - начало работы, T_STOP соответственно конец. В итоге нужно получить таблицу следующего вида: USER_ID 10:00-11:00 11:00-12:00 12:00-13:00 13:00-14:00 и так до 18:00Сотрудник1 0 ~18/60 1/60 24/60 Модератор: Осваиваем тег CSV ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 09:22 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:14 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
mkr, уже натолкнули, но я не пойму как код работает Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 14:47 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
aford, для каждого столбца делай отдельные условия 10:00-11:00, 11:00-12:00... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:24 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
mkr, Пробовал, не выходит. У меня CASE на каждый час, должна получиться одна строка, а в итоге 5 строк.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:34 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
afordуже натолкнули Код можно и сократить на if-ах плюс проинициализировать переменные по часам, что скажется на скорости и читабельности. Обернуть процедурой. Плюсом не обрабатывается ситуация, когда работник задержался чуток (до 00:01 следующего дня, к примеру). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:46 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
wadman, Можно пример? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:49 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
afordМожно пример?Пример мною описанного решения будет законченным. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 15:54 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Вот что выходит, как прописать теперь в этом цикле время с прибавлением в час? Я в процедурном языке FireBird не особо то и силен, поэтому и обратился на форум. ps да, знаю что код у меня бредовый :D ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 16:32 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
aford, Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 17:52 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
Мне искренне жаль этого препода. Неглупый мужик, право слово, и искренне пытается научить думать. Человек придумывает типы заданий, вносит антураж словоблудием и маскирует схожесть, а студеры идут сюда и папки, топорща пёрышки, раз за разом клепают им курсовики. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 20:10 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
СПМ> Мне искренне жаль этого препода. Неглупый мужик, право слово, СПМ> и искренне пытается научить думать. Человек придумывает типы СПМ> заданий, вносит антураж словоблудием и маскирует схожесть Ты его знаешь что ли? А-то я что-то не заметил интересных заданий и стимулирующего антуража (да и вообще, интерес должен превалировать в школе, а не в универе, ИМХО). Лучше бы азам хорошенько научил. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2018, 20:35 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#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. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55.
Вот, кстати еще решение, но тут считает не совсем верно. Мне нужно считать время в час, даже если Time_begin было с 8 утра, т.е. сотрудники ходят на перерывы - соответственно меняют статус, а в данном случае запрос выбирает значения Time_begin и Time_end в пределах одного часа, если нет совпадений, то выводит null... Код: sql 1.
В общем, вопрос все еще открыт ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:24 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
afordне компиллируетсякол-во затребованных столбцов не соответствует кол-ву переменных? Нет такой ошибки "не компилируется", есть вполне конкретные со ссылками на конкретные строки хранимки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:34 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, ошибка в while. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:37 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
а... вона оно как. Так как ты написал писать решительно нельзя. Нельзя тут цикл впендюрить, только копипастом. Перечислил все поля, в секции инто столько же переменных куда записать результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 21:18 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
Тем самым я возвращаюсь в начало. В итоге 5 строк в результате, я так думаю, что надо складывать что-то где-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 08:47 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
На текущий момент имею такое решение: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Все считает, но за текущие сутки, а мне нужно с 8 утра выбранного дня (входная переменная :D) до 8 утра следующего дня. Условие WHERE прописал, но все равно как надо не работает. Нужно вычитать не часы TIME, а даты TIMESTAMP. Попробовал заменить код Код: sql 1.
на Код: sql 1.
Не запускается процедура, выдает ошибку: авторStrings can not be devided in dialect 3 Странно, я ж не пытаюсь разделить строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 08:37 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
afordавторStrings can not be devided in dialect 3Прямо так и написано? А то мне слово d _i_ vided глаз резануло. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 09:23 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
WildSery, суть от этого не меняется) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 10:07 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
procedure Код: 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.
Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2018, 17:11 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
Flashpoke, я не знаю как применить вашу процедуру к моей базе и что куда вставить скопировать.... вот моя целиком: Код: 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. 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. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270.
Результата так и не добился, надо считать с 8 утра до 8 утра следующего дня. На данный момент, если сотрудник работает, допустим, с 20:00 до 01:00 без перерывов - ему не правильно посчитается статус. Пробовал задавать промежутки без EXTRACT - не правильно считает. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2018, 13:57 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
afordРезультата так и не добилсяиндексы на WORKTIME какие есть? план запроса где? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2018, 16:34 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
Ivan_Pisarevskyиндексы на WORKTIME какие есть? Индексов нет Ivan_Pisarevskyплан запроса где? Зачем план запроса? Нажимаю F9 в IBExpert, ввожу ID сотрудника и дату - на выходе получаю отработку в час ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2018, 16:52 |
|
Вычисление среднего значения за час
|
|||
---|---|---|---|
#18+
afordЗачем план запроса?В твою портянку не вникал, подумал, что работает очень долго. В каждом часовом интервале надо сложить 4 числа: 1. если работа началась раньше часа и закончилась позже, то +1 час 2. если работа началась раньше часа и закончилась до конца, то + (время от конца работы - время начала часа) 3. если работа началась позже начала часа и закончилась позже, то + (время от конца часа - время начала работы) 4. если работа началась позже начала часа и закончилась до конца, то + (время от конца работы - время начала работы) т.е то что я написал выше надо перевести на аглицкий case ... end + case ... end + case ... end + case ... end AS BetweenXandY ... |
|||
:
Нравится:
Не нравится:
|
|||
12.04.2018, 17:22 |
|
|
start [/forum/topic.php?fid=40&msg=39620901&tid=1561161]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
134ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 312ms |
total: | 537ms |
0 / 0 |