У меня был другой вопрос, но это немного запутало, поэтому я постараюсь на этот раз все упростить.
У меня есть таблица "option":
id | option_name
1 "Option 1"
2 "Option 2"
3 "Option 3"
4 "Option 4"
5 "Option 5"
6 "Option 6"
7 "Option 7"
и другая таблица«пользователь» с некоторой пользовательской информацией.Затем я создал таблицу с именем daily_voting, где каждый день каждый пользователь может выбрать опцию.Это должно быть так:
user_id | option_id | timestamp
1 1 2018-12-24 00:01:00.091055-03
2 1 2018-12-24 01:01:00.091055-03
3 2 2018-12-24 02:01:00.091055-03
1 2 2018-12-25 00:01:00.091055-03
2 2 2018-12-25 00:02:00.091055-03
3 5 2018-12-26 00:02:00.091055-03
Если я сделаю:
select count(*) as votes, option_id, date_trunc('day', daily_voting.timestamp) as day
from daily_voting
where date_trunc('day', daily_voting.timestamp) = '2018-12-24 00:00:00-03'
group by option_id, day
order by votes desc
limit 1
Я бы получил:
votes | option_id | day
2 1 2018-12-24 00:00:00-03
Что мне нужно, проходя недельный диапазонс текущего дня, вероятно, с:
date_trunc('week', current_date) and date_trunc('week', current_date+7)
Запрос, где результат будет:
votes | option_id | day
2 1 2018-12-24 00:00:00-03
2 2 2018-12-25 00:00:00-03
1 5 2018-12-26 00:00:00-03