SQL求助,跨月计算销售目标

f98639a5740a8900f648ccdcd9e64ce.png每家门店每个月的日销售目标不同

FineReport Yours飞飞 发布于 6 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
Yours飞飞Lv5见习互助
发布于6 天前

with 销售目标 as 

(

WITH RECURSIVE dates AS (

    SELECT 1 AS day_num 

    UNION ALL 

    SELECT day_num + 1 FROM dates 

    WHERE day_num < DAY(LAST_DAY(STR_TO_DATE(CONCAT('2025-01', '-01'), '%Y-%m-%d')))

),t as 

(select 年月,

       机构名称,

sum(销售目标)/10000/DAY(LAST_DAY(CONCAT(left(年月,4), '-', RIGHT(年月,2), '-01'))) 日销售目标

from dw_销售目标

group by 年月,机构名称)

SELECT 

    STR_TO_DATE(CONCAT(t.年月,  '-', LPAD(d.day_num,  2, '0')), '%Y-%m-%d') AS date,

    t.机构名称, 

    t.日销售目标  

FROM t 

JOIN dates d ON 1=1 

WHERE STR_TO_DATE(CONCAT(t.年月,  '-', LPAD(d.day_num,  2, '0')), '%Y-%m-%d') is not null

)

select 机构名称,sum(日销售目标) 销售目标 from 销售目标

where date>='2025-03-31' and date<='2025-04-01'

group by 机构名称

最佳回答
0
CD20160914Lv8专家互助
发布于6 天前(编辑于 6 天前

select 年月,机构名称,你另一个字段计算,

sum(case when 日期>='2025-03-31' and 日期<='2025-04-01' then 销量 else 0 end ) as 两天销量

from 表名称 

group by 年月,机构名称

select * from  订单

where 1=1

and 年月 >='${format(开始日期,"yyyy-MM")}'

and 年月<='${format(结束日期,"yyyy-MM")}'

image.png

  • Yours飞飞 Yours飞飞(提问者) 日销售目标是按照月存储的(比如:2025-03 张梁店 3.5,2025-04 张梁店 2.5,如果传进来开始时间和结束时间是:2025-03-31, 2025-04-01,那么张梁店的销售目标就是:3.5+2.5=6)
    -------------------多门店、跨月份的销售目标汇总
    2025-04-23 14:30 
  • CD20160914 CD20160914 回复 Yours飞飞(提问者) 你按月存的,那判断不到日呀,大哥。怎么不增加一列把日也写入数据库。
    2025-04-23 14:32 
  • CD20160914 CD20160914 回复 Yours飞飞(提问者) 如果按你的说明,传的是年月日,那么是可以的。
    2025-04-23 14:32 
最佳回答
0
FR-LeonLv4见习互助
发布于6 天前

你的日期不到日,无法计算日

  • 2关注人数
  • 50浏览人数
  • 最后回答于:6 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部