sqlite数据库求同比环比

image.png

然后拿到上个月的数据进行求同比跟环比,主要就是不知道怎么拿。

用户kCCpJ0269548 发布于 2021-9-2 11:58
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
snrtuemcLv8专家互助
发布于2021-9-2 12:26

订单明细环比

select t.m,t.ym,

      t.销量,

      t1.销量 同期,

      (case when t1.销量 is null then '' 

          else (t.销量-t1.销量)/t1.销量 end) 同比,

      t2.销量 上期,

      (case when t2.销量 is null then '' 

          else (t.销量-t2.销量)/t2.销量 end) 环比

from 

(

select strftime('%m',b.订购日期)+0 m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '${y}'

group by strftime('%Y-%m',b.订购日期)

) t

left join

(

select strftime('%m',b.订购日期)+0 m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '${y-1}'

group by strftime('%Y-%m',b.订购日期)

) t1 on t.m=t1.m

left join

(

select (case when strftime('%m',b.订购日期)+0 <=11

        then strftime('%m',b.订购日期)+1 end) m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '${y}'

group by strftime('%Y-%m',b.订购日期)

union

select (case when strftime('%m',b.订购日期)+0 =12

        then 1 end) m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '${y-1}'

group by strftime('%Y-%m',b.订购日期)

) t2 on t.m=t2.m

最佳回答
1
帆软用户s9a5ZJ63rOLv2见习互助
发布于2022-1-17 14:39

select strftime('%Y',A.订购日期) 年,A.ym 年月, A.销量 ,(A.销量 - B.销量)/B.销量 同比 ,(A.销量 - C.销量)/C.销量 环比

from

(select 订购日期,strftime('%Y-%m',订购日期) ym,strftime('%m',订购日期) m,sum(数量) as 销量

from 订单 d join 订单明细 m

on d.订单ID = m.订单ID 

group by ym

) A

left join

(select strftime('%Y-%m',订购日期) ym,strftime('%m',订购日期) m,sum(数量) as 销量

from 订单 d join 订单明细 m

on d.订单ID = m.订单ID 

group  by ym

) B

on A.ym-B.ym=1 and A.m-B.m=0

left join 

(select strftime('%Y-%m',订购日期) ym,strftime('%m',订购日期) m,sum(数量) as 销量

from 订单 d join 订单明细 m

on d.订单ID = m.订单ID 

group  by ym

) C

on (A.ym-C.ym=0 and A.m-C.m=1) or (A.ym-C.ym=1 and A.m-C.m=-11)

where 

${if(len(year)== 0,"1=1","strftime('%Y',A.订购日期) = '"+ year + "'")}

  • 4关注人数
  • 563浏览人数
  • 最后回答于:2022-1-17 14:39
    请选择关闭问题的原因
    确定 取消
    返回顶部