SQL 条件聚合
SQL conditional aggregate
我有一个 table:
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
使用 sum 、 max 和 group by 以及 sum 正确和错误的情况
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
试试这个:
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
我想你只是想要:
select items, sum(count), max(date)
from t
group by items;
我有一个 table:
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
使用 sum 、 max 和 group by 以及 sum 正确和错误的情况
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
试试这个:
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
我想你只是想要:
select items, sum(count), max(date)
from t
group by items;