SQL условный агрегат - PullRequest
0 голосов
/ 01 мая 2018

У меня есть таблица:

items status count date
----- ------ ----- ----------
apple good   100   01/02/2017
apple good   200   03/02/2017
apple bad    50    02/02/2017
pear  good   100   04/02/2017

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

items  count  date
-----  -----  ----------
apple  250    03/02/2017
pear   100    04/02/2017

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

Попробуйте это:

SELECT items, SUM(count) count, MAX(date) date
FROM table
GROUP BY items

А если вы хотите разделить сумму для каждого статуса, то:

SELECT items, status, SUM(count) count, MAX(date) date
FROM table
GROUP BY items, status
0 голосов
/ 01 мая 2018

Я думаю, вы просто хотите:

select items, sum(count), max(date)
from t
group by items;
0 голосов
/ 01 мая 2018

Используйте сумму, максимум и сгруппированные по и случай, когда для суммы правильно хорошо и плохо

select items, sum(case when status = 'good' then count else -count end), max(date)
from my_table 
group by itmes

или если вам не нужна относительная сумма, основанная на хорошем и плохом

select items, sum( count ), max(date)
from my_table 
group by itmes
...