Запрос количества с отметкой времени - PullRequest
0 голосов
/ 12 ноября 2018

Я хотел бы создать запрос подсчета (в Postgres), который рассчитывает data.data_name в зависимости от data.todb_date.

Итак, я хочу, чтобы запрос подсчитывал все строки, которые выше, чемтребование в пункте WHERE.Я пробовал Count(data.data_name) и Count(*), но они не работали.

Мой запланированный результат выглядит следующим образом:

todb_date: 2016-01-01 
data.data_name : test1
count: 150

todb_date: 2017-01-01 
data.data_name : test1
count: 130

Это запрос, который я пробовал:

SELECT data.data_name, parentdata.data_id, 
       data.data_id, parentdata.todb_date, 
       COUNT (data.data_name) 
FROM parentdata, data 
WHERE parentdata.data_id = data.data_id 
  AND parentdata.todb_date > '2016-01-01'
GROUP BY parentdata.data_id, data.data_id, data.data_name, parentdata.todb_date

1 Ответ

0 голосов
/ 12 ноября 2018

Как предложил @Usagi Miyamoto, вы должны использовать функцию data_trunc() для группировки ваших результатов в соответствии с определенными приращениями времени (здесь: в год):

SELECT d.data_name nam, date_trunc('year',p.todb_date) yr, COUNT(*) cnt 
FROM parentdata p 
INNER JOIN data d ON p.data_id = d.data_id AND p.todb_date > '2016-01-01'
GROUP BY d.data_name,date_trunc('year',p.todb_date)
ORDER BY nam, yr

Если вы замените 'year' на 'date', вы получите ежедневный счет, см. здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...