有大佬能给我做个注解吗,我看不太懂这个

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.订购日期)

) t2 on t.m=t2.m

FineReport yzm521611 发布于 2021-6-23 11:08
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
shirley930107Lv5见习互助
发布于2021-6-23 15:39(编辑于 2021-6-23 16:37)

具体是哪里看不懂呢?

分解下来其实就是把“订单明细表”和“订单表”通过共有字段“订单ID”合并起来,然后根据“订购日期”截取了月份、年月,根绝月份求出销量同比,根据年月求出销量环比

image.png

  • yzm521611 yzm521611(提问者) t1.销量跟这个类似的是什么意思
    2021-06-23 16:30 
  • shirley930107 shirley930107 回复 yzm521611(提问者) 就是t1表里的销量这个字段呀,t1表是在取数的过程中定义的,看我上面的截图,t1前面那个括号里面的语句就代表了t1的内容~
    2021-06-23 16:37 
最佳回答
0
chenheLv4见习互助
发布于2021-6-23 11:44
百度搜一下strftime 函数就懂了
最佳回答
0
chenxiaocn86Lv3见习互助
发布于2021-6-23 16:33

涉及子查询:

select t表和t2表的一堆字段

from 

(一串sql语句 起一个别名为t表) t

left join

(一串sql语句 起一个别名为t1表) t1 

on t.m=t1.m

left join

(一串sql语句 起一个别名为t2表) t2

 on t.m=t2.m

  • 2关注人数
  • 474浏览人数
  • 最后回答于:2021-6-23 16:37
    请选择关闭问题的原因
    确定 取消
    返回顶部