Задать вопрос

Как суммировать данные в таблице?

Здраствуйте! Есть данные из базы, расположены данные по всем таблицам базы.
Мне сказано сделать следующую таблицу:

=========== =============
| Принятые | Отклоненные |
=========== =============

Я сделал по одному, помогите мне сделать пожалуйста их объединенными.

Принятые
SELECT SUM(confirmed) AS "confirmed_ones"
FROM(
    SELECT COUNT(vr.status) AS confirmed
    FROM violation_requests AS vr
    WHERE vr.user_id = 1
    AND vr.status IN('confirmed'::incident_status)
    AND NOT vr.is_deleted

    UNION 

    SELECT COUNT(c.status)
    FROM complaints AS c
    WHERE c.user_id = 1
    AND c.status IN('confirmed'::incident_status)
    AND NOT c.is_deleted
) AS res;


Отклоненные
SELECT SUM(rejected) AS "rejected_ones"
FROM(
    SELECT COUNT(vr.status) AS rejected
    FROM violation_requests AS vr
    WHERE vr.user_id = 1
    AND vr.status IN ('rejected'::incident_status)
    AND NOT vr.is_deleted

    UNION

    SELECT COUNT(c.status)
    FROM complaints AS c
    WHERE c.user_id = 1
    AND c.status IN ('rejected'::incident_status)
    AND NOT c.is_deleted
) AS res;


Что только не перепробовал сделать - не получилось. Помогите, пожалуйста.
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
SELECT user_id, SUM(confirmed) AS "confirmed_ones"
FROM(
    SELECT vr.user_id user_id, COUNT(vr.status) AS confirmed
    FROM violation_requests AS vr
    AND vr.status IN('confirmed'::incident_status)
    AND NOT vr.is_deleted
    GROUP BY  vr.user_id = 1

    UNION 

    SELECT c.user_id, COUNT(c.status)
    FROM complaints AS c
    AND c.status IN('confirmed'::incident_status)
    AND NOT c.is_deleted
    GROUP BY  c.user_id
) AS res
GROUP BY  user_id;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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