Vika7
@Vika7
вебист

Запрос с функцией COUNT с помесячный разбивкой?

Ребята, добрый день

нужна помощь с запросом SELECT

есть таблица с репортами:
create table new_1report
(
    id_report  serial not null
        constraint new_1report_pkey
            primary key,
    id_form    integer
        constraint new_1report_id_form_fkey
            references new_form,
    admin  varchar(40),
    created_at timestamp default now(),
);


бьюсь над выводом количества репортов каждого админа, с разбивкой помесячно, примерно так:

фио янв фев март
Иванов И 5 3 8
Петров А 7 10 13
....


плиз помогите с решением

PS: использую такой запрос:
SELECT COUNT(admin_id), admin_id, a.admname
FROM new_1report f
        JOIN admin a ON f.admin_id = a.id
group by admin_id, a.admname


Но не хотелось бы для каждого месяца отдельные запросы делать
  • Вопрос задан
  • 481 просмотр
Решения вопроса 3
Zraza
@Zraza
Помог ответ? Отметь решением!
Можно так, а потом уже на стороне приложения разобрать
SELECT COUNT(admin_id), admin_id, a.admname, date_part('month', f.created_at)
FROM new_1report f
        JOIN admin a ON f.admin_id = a.id
group by admin_id, a.admname, date_part('month', f.created_at)
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
select admin_id
count(*) filter(where created_at >= '2019-01-01' and created_at < '2019-02-01'),
count(*) filter(where created_at >= '2019-02-01' and created_at < '2019-03-01'),
....
from tablename where ... group by admin_id

Или tablefunc

А называется то что вы хотите получить - PIVOT.
Ответ написан
@MonadTeq
Как Alex Karo или:
SELECT 
  COUNT(admin_id), 
  admin_id, 
  a.admname, 
  extract(month from f.created_at)
FROM new_1report f
   JOIN admin a ON f.admin_id = a.id
GROUP BY admin_id, a.admname, extract(month from f.created_at)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
group by решение
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы