SELECt month date,
count(1) serviceNum,
neighbor(serviceNum, -1) serviceNumYesterday,
round((serviceNum - serviceNumYesterday) / if(serviceNumYesterday = 0, 1, serviceNumYesterday), 3) numRatio,
count(distinct recipientMobile) servicePerson,
neighbor(servicePerson, -1) as servicePersonYesterday,
round((servicePerson - servicePersonYesterday) / if(servicePersonYesterday = 0, 1, servicePersonYesterday),3) personRatio
FROM datacenter.tdm_order_logistics_info final
WHERe (orderState = 'COLLECTED' AND month BETWEEN '2020-09' AND '2021-09' )
GROUP BY date
如图:此时出现了很严重的乱序,有人觉得增加order by就可以了,实际order by,是在计算结果出来之后再排序,结果并不是我们想要的
SELECt toInt16(concat(substring(month,4,1),substring(month,6,2))) date,
count(1) serviceNum,
neighbor(serviceNum, -1) serviceNumYesterday,
round((serviceNum - serviceNumYesterday) / if(serviceNumYesterday = 0, 1, serviceNumYesterday), 3) numRatio,
count(distinct recipientMobile) servicePerson,
neighbor(servicePerson, -1) as servicePersonYesterday,
round((servicePerson - servicePersonYesterday) / if(servicePersonYesterday = 0, 1, servicePersonYesterday),3) personRatio
FROM datacenter.tdm_order_logistics_info final
WHERe (orderState = 'COLLECTED' AND month BETWEEN '2020-09' AND '2021-09' )
GROUP BY date
如图:此时乱序现象不存在了



