|
|
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
Господа подскажите красивое решение. Есть таблица moment (datetime) first (nimeric) last (nimeric) high (nimeric) low (nimeric) moment это минутные значения (т.е. первое значение за минуту, последнее, максимальное и минимальное) необходимо построить аналогичный ряд, но по другому периоду. Например по 5 минут (аналогично первое, последнее, максимальное за 5 мин и минимальное) Как сделать с курсорами понятно, а как сделать без курсоров? Тут по идее как-то группировкой можно обойтись...или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2002, 17:04:40 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
Вот уж непонятнее вопроса я и не встречал. Нельзя ли поупорядоченнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2002, 18:13:44 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
Ок. постараюсь подробнее. есть минутные данные (tb_min1) moment | open | close | max | min 10.01.00 | 1.0 | 1.2 | 1.4 | 1.0 10.02.00 | 2.0 | 2.2 | 2.4 | 2.0 10.03.00 | 3.0 | 3.2 | 3.4 | 0.1 10.04.00 | 4.0 | 4.2 | 6.4 | 4.0 10.05.00 | 5.1 | 5.3 | 5.5 | 5.0 open значение измеряемой величины на начало минуты close значение измеряемой величины на конец минуты max максимально значение измеряемой величины за минуту min минимальное значение измеряемой величины за минуту из этих данных необходимо построить аналогичный ряд, но за период 5 минут. т.е. moment | open | close | max | min 10.05.00 | 1.0 | 5.3 | 6.4 | 0.1 open первое значение из столбца open_1_min close последнее значение из столбца tb_1min.close max = max(tb_1min.max) min = min(tb_1min.min) Опять плохо описал? :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2002, 18:34:08 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
Теперь лучше... Задача и впрямь интересная. Надо помозговать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2002, 18:46:06 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
Если я делаю GROUP , то я могу как-то обработать данные внутри группы (например взять первое значение одного поля и последнее значение другого поля)? Не хранятся ли эти данные в каких-то временных таблицах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2002, 18:56:38 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2002, 19:23:38 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
блин... последнюю строку читать так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2002, 19:39:18 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
MiCe. Это в общем виде не катит. \r \r Не очень красиво, но работает\r Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2002, 20:48:55 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
А может вообще так ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2002, 21:28:35 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
Но в таком случае обрабатывають данные можно только за час т.к. потом будет группировка пересекатся за разные часы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2002, 14:05:22 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
Понял. надо просто изменить Код: plaintext так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2002, 14:10:56 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
В принципе - да. Но можно и так Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2002, 14:57:44 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
> valmond Группировка из примера Glory пересекаться не будет. > Glory Это не катит, хотя вроде должно работать. В тестовых данных автора топика первые значения за минуту упорядочены по возрастанию. Сомневаюсь, что так есть всегда. Результат твоего запроса по моим данным, период=3 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Вообще четыре строки выдало. Не катит также Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Хотя я не врубаюсь почему А вот так - катит, но нельзя получить последнее измерение [src] select min(t1.moment) as moment, min(t2.first) as first, min(t1.low) as low, max(t1.Hight) as hight from abc t1 join (select * from abc where datediff(minute,@moment,moment)%@period=0) t2 on datepart(minute,t1.moment)>=datepart(minute,t2.moment) and datepart(minute,t1.moment)<datepart(minute,t2.moment)+@period group by datediff(minute,@moment,t1.moment)/@period [src] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2002, 15:28:48 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
Вообще четыре строки выдало. Ну так и должно быть 4. Если 1 час "нарезать" по 3 минуты, то и получатся диапазоны (13)-14-15, 16-17-18, 19-20-21, 22-(23)-(24) Если же идет о "нарезке" начиная от минимальной даты в таблице, то тогда мой вариант действительно не катит. А насчет "значения за минуту упорядочены по возрастанию" так это как раз и не важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2002, 15:57:54 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
> GLory. Точно. Я начал решать с "TOP 1", но что-то меня заклинило. Твой запрос можно преобразовать для работы от минимальной даты Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Все хокей Код: 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.11.2002, 16:25:58 |
|
||
|
Группировака временного ряда
|
|||
|---|---|---|---|
|
#18+
В постинге от 24.11 15:28 я ошибся. Пересечение действительно будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2002, 17:00:32 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32071660&tid=1818549]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 307ms |

| 0 / 0 |
