Как суммировать данные в зависимости от значения в колонке

Есть таблица scrap с 4-мя колонкам

scrap
 id:     integer
 number: integer
 type:   integer
 mass:   float

данные

введите сюда описание изображения

на выходе должно получиться новая таблица в которой будет

mass_t  mass_k

где mass_t сумма всех mass, а mass_k сумма всех mass, где type=5. В итоге должно получиться

mass_t  mass_k
37.55   7.25

В голове возникает только одна идея с case, но до конца не пойму как это сделать


Ответы (2 шт):

Автор решения: JavaJunior

Поскольку тип БД не был указан, держите реализацию на PostgresSQL:

select sum(mass) mass_t, sum(mass) filter (where type = 5) mass_k from scrap;
→ Ссылка
Автор решения: Akina

Вот реализация, которая применима практически к любой СУБД:

SELECT SUM(mass) AS mass_t, 
       SUM(CASE WHEN type = 5
                THEN mass
                ELSE 0 
                END) AS mass_k 
FROM scrap;
→ Ссылка