postgresql получает среднее количество обращений за неделю с ежедневными данными

#postgresql

Вопрос:

У меня есть таблица под названием Table1. Я пытаюсь получить среднее значение за неделю, но у меня есть только ежедневные данные. Моя таблица содержит следующие атрибуты: CaseID, дата, статус и некоторые другие (не относящиеся к делу) атрибуты. Со следующим запросом я составил следующую таблицу, которая близка к тому, что я хочу:

Тем не менее, я хотел бы добавить среднее число случаев в неделю. Я искал везде, но я не уверен, как это включить. У кого-нибудь есть какие-нибудь подсказки, как это добавить.

Спасибо.

Ответ №1:

Чтобы подробнее рассказать об ответе @luuk…

 SELECT 
  date,
  COUNT(id) as countcase,
  EXTRACT(WEEK FROM date) AS weeknbr, 
  AVG(COUNT(id)) OVER (PARTITION BY EXTRACT(WEEK FROM date)) as weeklyavg
FROM table1
GROUP BY date, weeknbr
ORDER BY date, weeknbr
 

Это возможно, так как Агрегация / ГРУППИРОВКА ПО применяется перед функцией окна/аналитики.

Ответ №2:

 select 
  date, 
  countcase, 
  extract(week from date) as weeknbr, 
  avg(countcase) over (partition by extract(week from date)) as weeklyavg
from table1;
 

Комментарии:

1. Единственная проблема заключается в том, что я создаю countcase в запросе (его нет в исходной таблице)… Как мне это обойти?

2. замените countcase на count(id) , чтобы соответствовать запросу, указанному в вашем вопросе.

3. Я понимаю это, но как это работает для расчета среднего значения? Потому что это выдает ошибку, так как countcase нет в таблице.

4. Он не может выдать ошибку countcase , потому что вы заменили count(id) ее на ?

5. Извини, полностью моя вина… Вы совершенно правы! Я сейчас работаю!