У меня есть PostgreSQL таблицы userDistributions, как это:
user_id, start_date, end_date, project_id, distribution
Мне нужно написать запрос, в котором определенный диапазон дат и идентификатор пользователя, результат должен быть суммой всех распределений за каждый день для данного пользователя.
Так что выход должен быть, как это для ввода: «2-2-2012» - «2-4-2012», некоторые идентификаторов пользователя:
Date SUM(Distribution)
Как найти сумму столбца между заданным диапазоном дат, где таблица имеет только дату начала и дату окончания
2-2-2012 12
2-3-2012 15
2-4-2012 34
Пользователь имеет распределение во многих проектах, поэтому я необходимо суммировать распределения во всех проектах за каждый день и выводить эту сумму по сравнению с этим днем.
Моя проблема в том, с чем мне следует группироваться? Если бы у меня было поле в качестве даты (вместо start_date и end_date), тогда я мог бы написать что-то вроде
select date, SUM(distributions) from userDistributions group by date;
, но в этом случае я в тупике, как что делать. Спасибо за помощь.
Ваша база данных нуждается в календарную таблицу. Это упрощает эти запросы. –
@GordonLinoff: вам почти никогда не нужны календарные таблицы с PostgreSQL, 'generate_series' намного приятнее. –
Ожидаете ли вы увидеть данные о дате без проектов? –