|
Хитрый запрос
|
|||
---|---|---|---|
#18+
Добрый день. Мне нужно получить сумму столбцов за определенный период (см приложение). Сложность в том, что детализация может быть от минут до годов. Например мне нужно посчитать сумму за каждый месяц, а месяцев там может быть 100500. Приходится составлять список месяцев и делать запрос типа того, что на скриншоте.(ещё и потому что в результатах не должно быть дырок, например если после июня идет август то обязательно д.б. результат за июль, который будет = 0 ) Соответственно сильно страдает производительность. Нельзя ли это всё дело запихнуть в один запрос или как-то упростить это дело? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2010, 15:42 |
|
Хитрый запрос
|
|||
---|---|---|---|
#18+
Для того что бы что-то выбрать за определенный период времени - нужно для начала правильно записать дату и время: YYYY-MM-DD HH:MM ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2010, 11:43 |
|
Хитрый запрос
|
|||
---|---|---|---|
#18+
Alexbootch, а по делу есть что? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2010, 15:04 |
|
Хитрый запрос
|
|||
---|---|---|---|
#18+
eugene_crabs, если хочешь получить ответ - выкладывай запросы на создание таблиц и наполнение их данными, т.к. в голове твои задачи никто решать не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2010, 15:18 |
|
Хитрый запрос
|
|||
---|---|---|---|
#18+
Alexbootch всё верно сказал. Если вы храните дату в формате yyyy-mm-dd hh24:mi:ss то выборка данных по периоду будет выполняться простым date_col > '2010-01-01' and date_col <= '2010-07-31'... При этом не нужно вырисовывать лайки. Сравнение строк будет работать правильно. Если нет данных - нужно их добавить с count = 0 - такого, насколько я знаю, в sqlite нет. Это в Oracle есть оператор MODEL, который позволяет "рисовать" данные, которых нет ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2010, 02:54 |
|
Хитрый запрос
|
|||
---|---|---|---|
#18+
Хорошо, я исправил формат. Теперь как мне посчитать сумму столбца count1 за июль не используя лайк? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2010, 08:22 |
|
Хитрый запрос
|
|||
---|---|---|---|
#18+
eugene_crabsХорошо, я исправил формат. Теперь как мне посчитать сумму столбца count1 за июль не используя лайк? Без LIKE ничего не получится, т.к. Вы хотели вывести сумму строки count1 за июнь без учета времени. Вот так можно вывести: Код: plaintext
Кроме того, нельзя использовать зарезервированное слово date в названия столбцов таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2010, 10:16 |
|
Хитрый запрос
|
|||
---|---|---|---|
#18+
если дата будет храниться в обговоренном выше формате, то сумму за месяц (любой период) можно посчитать без like... Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2010, 02:54 |
|
Хитрый запрос
|
|||
---|---|---|---|
#18+
Спасибо, я попробую сделать так. Хотелось бы ещё узнать как сильно LIKE влияет на производительность. Если я использую sum и like одновременно, то при не очень большой базе время извлечения составляет примерно 10мс, что слишком медленно для меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2010, 12:21 |
|
Хитрый запрос
|
|||
---|---|---|---|
#18+
eugene_crabs, автордетализация может быть от минут до годов. Например мне нужно посчитать сумму за каждый месяц, а месяцев там может быть 100500. Приходится составлять список месяцев и делать запрос типа того, что на скриншоте.(ещё и потому что в результатах не должно быть дырок, например если после июня идет август то обязательно д.б. результат за июль, который будет = 0 ) на эти вопросы я что-то не заметила ответов...... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2010, 03:43 |
|
|
start [/forum/topic.php?fid=54&fpage=25&tid=2009296]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 155ms |
0 / 0 |