2015-06-19 4 views
0

У меня есть следующий формат данных:PostgreSQL: Совокупные более одного столбца

id  eventtime   use 
A 2015-01-01 00:00:00-01 5.2 
. 
. 2015-06-06 23:59:50-01 5.7 
B 
. 
. 

Я пытаюсь получить выход вида:

id  eventtime    use 
A   2015-01-01    1200 
.   2015-06-06    1400 
. 
B   2015-01-01    1500  

в основном сумма использования элемента для каждый пользователь за каждый день в моей базе данных.

Я попытался

select id, eventtime, sum(use) from table group by id,eventtime 

Я получил агрегат в этом случае, что я не могу иметь смысл, что то есть не добавляет ко всему, что он должен. Любая помощь будет оценена, спасибо заранее!

ответ

0

Вам необходимо преобразовать eventtime в дату, удалив компонент времени. Я думаю, что самый простой способ использует date_trunc():

select id, date_trunc('day', eventtime) as eventday, sum(use) 
from table 
group by id, eventday 
order by id, eventday; 

Я не уверен, почему ваш пример запроса имеет id в select, но user в group by.

0

Вы хотите GROUP BY extract('day' FROM eventtime) или GROUP BY CAST(eventtime AS date).

Обратите внимание, что это предотвратит использование любого индекса на eventtime. Если вам нужно, вы можете создать индекс выражения, соответствующий тому, что вы используете в предложении group by.

Смежные вопросы