Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Разбиение периода времени на часовые интеравалы
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Помогите оформить все одним SQL запросом, можно с использование ХП, главное чтобы не делать никаких вычислений на стороне клиента. А задача така. Есть таблица с полями ID, начало сессии, конец сесии. Что-то типа ID| session_begin| session_end ----------------------------- 1 | 30.04.2007 15:43 | 01.05.2007 20:34 2 | 30.04.2007 23:10 | 02.05.2007 08:12 Надо разбить интервал [session_begin, session_end] на часы чтобы получилось так: ID| session_begin| session_end ----------------------------- 1 | 30.04.2007 15:43 | 30.04.2007 16:00 1 | 30.04.2007 16:00 | 30.04.2007 17:00 1 | 30.04.2007 16:00 | 30.04.2007 17:00 1 | 30.04.2007 17:00 | 30.04.2007 18:00 ..... 1 | 01.04.2007 20:00 | 01.05.2007 20:34 2 | 30.04.2007 23:10 | 01.05.2007 00:00 2 | 01.05.2007 00:00 | 01.05.2007 01:00 ... 2 | 02.05.2007 08:00 | 02.05.2007 08:12 Это надо для того чтобы можно было получить распределение загружености на часам с дополнительными условиями. Например Загруженость за последний месяц, только четные дни или только с пятницы до воскресенья. Как делать группировки и суммировая я знаю, не знаю только как разделить один интервал на несколько записей. Или может кто-нибудь предложит другое решение данной проблемы? P.S. Поля session_begin и session_end хранятся как intger unix timestamp, перевести их в postgres timestamp не проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 10:59 |
|
||
|
Разбиение периода времени на часовые интеравалы
|
|||
|---|---|---|---|
|
#18+
ffkне знаю только как разделить один интервал на несколько записей.Я бы написал ХП, у которой на входе диапазон, на выходе нужное кол-во строк по часам. А потом ее можно join. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2007, 11:24 |
|
||
|
Разбиение периода времени на часовые интеравалы
|
|||
|---|---|---|---|
|
#18+
Может что-то типа: date_trunc(''hour'',time_begin) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 01:08 |
|
||
|
Разбиение периода времени на часовые интеравалы
|
|||
|---|---|---|---|
|
#18+
ffkДоброго времени суток. Помогите оформить все одним SQL запросом, можно с использование ХП, главное чтобы не делать никаких вычислений на стороне клиента. А задача така. Есть таблица с полями ID, начало сессии, конец сесии. Что-то типа Можно так попробовать: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 06:29 |
|
||
|
Разбиение периода времени на часовые интеравалы
|
|||
|---|---|---|---|
|
#18+
Skif Swarogich: нет это совсем не то. Kruchinin Pahan: Огромное спасибо, после небольших исправлений данный вариант заработал! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вот его Explain: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Не знаю, стоит ли заморачиваться на счет ХП, т.к. ХП никогда не писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 08:49 |
|
||
|
Разбиение периода времени на часовые интеравалы
|
|||
|---|---|---|---|
|
#18+
Вот более правильный вариант этого, может кому-нибудь пригодиться Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 13:29 |
|
||
|
Разбиение периода времени на часовые интеравалы
|
|||
|---|---|---|---|
|
#18+
ffkНе знаю, стоит ли заморачиваться на счет ХП, т.к. ХП никогда не писал. Если скорость работы устраивает, то заморачиваться не стоит. А вот если данные собираются накапливаться в больших количествах, то возможно будет достигнута некоторая критическая масса, когда хранимка будет работать на порядок быстрее запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2007, 13:30 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=2005485]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
135ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 422ms |

| 0 / 0 |
