有这样的一批数据
id type value datetime
1 80 1 2017-11-22 12:00:00
2 80 2 2017-11-21 12:00:00
3 82 3 2017-11-22 12:00:00
4 90 4 2017-11-22 12:00:00
5 82 3 2017-11-22 11:00:00
目标是根据datetime,groupby一下取出每天的合计value,带有的逻辑条件如下:
1.假如一天中出现type=82的数据,只取type=82最新的那一条,跟80的相加统计
3.假如出现type=90的数据,只取type=90最新的那一条进行统计,其他的全部忽略
实现上面第一个条件我是这样实现的:
select DATE_FORMAT(datetime,'%Y-%c-%e') as Time,sum(value) as value
from ( select * from table where Type = '80'
union all
select * from( SELECT * FROM(SELECT * FROM table
where Type = '82' ORDER BY datetime DESC)b
GROUP BY DATE_FORMAT(datetime, '%Y-%c-%e') ORDER BY datetime DESC ) table2)table3
GROUP BY DATE_FORMAT(datetime,'%Y-%c-%e') order by datetime desc;
假如当天出现type=90的数据的时候,在统计当天的数据的时候,只取type=90最新的一条就可以了,当天就不统计其他type的数据了,这该怎么写sql呢