У меня есть две таблицы, одна из которых содержит сообщения и другие, содержащие комментарии. Есть миллионы сообщений и 100 миллионов комментариев, в таблице комментариев также содержатся идентификаторы сообщения. Комментарии деактивируются через некоторое время, я хочу знать, какие сообщения имели наибольшее количество комментариев за последние 30 дней до того, как они были деактивированы.SQL-запрос, чтобы получить наибольшее количество комментариев с прошлого месяца
Что мне нужно сделать, это найти max (comment_date) для каждого сообщения из таблицы комментариев и подсчитать все комментарии за 1 месяц с этой даты для каждого сообщения.
так что я хочу сгруппировать по post_id
, найти max(comment_date)
и получить оценку всех комментариев от max(comment_date) - 1 month
за каждое сообщение. Я пытаюсь создать запрос для получения этих данных?
База данных - postgres 9.4.1.
Я не понимаю необходимость функции окна для этого, не будет 'select c.post_id, max (comment_date) как maxcd из комментариев; group by post_id; 'работать то же самое в подзапросе? – rajat
@rajat. , , Вам нужно будет присоединиться к нему в таблице 'comments', чтобы получить счет, который вы действительно хотите. Использование оконных функций должно иметь лучшую производительность. –
@GordonLinoff, я был бы признателен, если бы вы могли взглянуть на мой ответ на этот вопрос. Как вы думаете, можно ли сделать два шага вместе? Можно ли избежать явного поиска индекса для «максимальной даты», а затем для «максимальной даты - 30 дней»? У меня такое ощущение, что функция окна, такая как 'FIRST_VALUE', может сделать трюк. –