mysql 获取工作日上一天的数据 环比MYSQL 两日期之间的工作日(除去周六日,不考虑节假日)

现有数据格式为

-- 原始数据   
period_wid       num

20190625            30

20190624            33

20190621            31

20190620            21

-- 目标数据格式
   period_wid       num           last_num

20190625            30             33

20190624            33             31

20190621            31             21

20190620            21

取得前一天:

yyyyMMdd类型的值转日期

date_format(period_wid,'%Y-%m-%d') , '20190625'  转换成了 2019-06-25

yy-MM-dd如何转换为yyyyMMdd

replace(date,'-','');  把日期里面的-替换掉就行了

-- 获取当前日期在上周的周四
SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')+3)
-- 获取当前日期在本周的五
SELECT SUBDATE(CURDATE(),DATE_FORMAT(CURDATE(),'%w')-5)
DATE_SUB() 函数从日期减去指定的时间间隔。
CURDATE() 函数获得当前的年月日日期
%w     一个星期中的天数(0=Sunday   ……6=Saturday )
-- period_wid 20190625
SELECT 
   PERIOD_WID
   ,I_T  
   ,I_T2
   ,SUM(MICE) AS MKT_PRICE
   ,SUM(LICE) AS LAST_MKT_PRICE   
FROM(
SELECT
    PERIOD_WID
   ,I_T 
   ,I_TE2
   ,MKT_PRICE
   ,0 AS LAST_MKT_PRICE
   FROM AA.BBBBB
  UNION ALL 
   SELECT   
      replace(
     CASE WHEN (weekday(date_format(period_wid,'%Y-%m-%d'))+1)%7 = 1 --如果是本周一
--取上周五
     THEN  subdate(date_format(period_wid,'%Y-%m-%d'),date_format(date_format(period_wid,'%Y-%m-%d'),'%w')-2)   
     ELSE date_sub(date_format(period_wid,'%Y-%m-%d'),interval -1 day)  --否则取昨天
     END,'-','')  AS PERIOD_WID
   ,I_T 
   ,I_T2
   ,0 AS MKT_PRICE
   , MKT_PRICE AS LAST_MKT_PRICE
   FROM AA.BBBB) F
   GROUP BY 
     PERIOD_WID
    ,ITEM_TYPE 
    ,ITEM_TYPE2 ORDER BY PERIOD_WID DESC

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值