----背景:统计某段时间内订单总数,付款订单数,未付款订单数,根据每个订单中的 sku的种类数。
----思路:
--1.先给每个订单,按照订单中 sku个数,打付款标签,设置两个字段(方便求和), paidOrderTotal,unpaidOrderTotal
--2.根据时间和订单中sku个数,分组汇总。
---测试环境:sql server
2008 r2.
---测试结果:运行速度较慢。
----后续可以结合每单访问的详情页面数据做访问质量的监控
select aa .skuNum --订单中的sku 种类数
,DATENAME (DAY, aa.CreatedOn )as w --按周统计
,COUNT( aa.orderid )as orderTotal --统计总的订单数
,SUM( aa.paidOrderTotal )as paidOrderTotal --付款订单
,SUM( aa.unpaidOrderTotal )as unpaidOrderTotal -- 未付款订单
from (
select ords .OrderID
,ords. CreatedOn
,case when COUNT (od. sku)> 0 and COUNT (od. sku) < 11 then '1~10'
when COUNT (od. sku)> 10 and COUNT (od. sku) < 21 then '10~20'
when COUNT (od. sku)> 20 and COUNT (od. sku) < 31 then '20~30'
when COUNT (od. sku)> 30 and COUNT (od. sku) < 41 then '30~40'
when COUNT (od. sku)> 40 and COUNT (od. sku) < 51 then '40~50'
when COUNT (od. sku)> 50 then '50~'
end as skuNum --订单中的sku 种类数
,count( distinct case when ords.OrderStatusID not in(2) then ords .OrderID end)
as paidOrderTotal
,count( distinct case when ords.OrderStatusID in(2 ) then ords .OrderID end)
as unpaidOrderTotal
from Focalprice_db .dbo. orders ords(nolock ),Focalprice_db. dbo.OrderDetails od( nolock)
where ords .OrderID = od .OrderID
and CONVERT (nvarchar ,ords .CreatedOn ,112)> '20120501'
group by ords. OrderID,ords .CreatedOn
) aa
group by aa. skuNum , DATENAME ( DAY,aa .CreatedOn)
加载中,请稍候......