上周销售额

select 'ALL' as 据点,sum(xmdl018) as 销售数量,sum(未税金额1) as 未税金额 from(select xmdksite,xmdl018,xmdk016,ooao095,(case when xmdk000='6' then jg*-1 else jg end)as 未税金额1 from(select xmdksite,xmdldocno,xmdlseq,xmdk000,xmdk001,to_char(xmdk001,'mm')as xmdk001_1,
to_char(xmdk001,'yyyymm')as xmdk001_2,xmdk009,pmaal004,xmdl018,xmdl008,imaal003,imaal004,xmdk045,xmdk016,ooao005,glaa001,pmaa095,
(CASE --指定结案,根据已交数量*单价计算金额 round((apba014/l_oldsy*l_newsy),4)
when glaa001='RMB' AND xmdl025 LIKE 'P%'THEN
(xmdl022*xmdl024/(xmdl026/100+1)*(case when glaa001='RMB' AND ooao005 is NOT null THEN COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
when glaa001='HKD' AND xmdl025 LIKE'P%'THEN
(xmdl022*xmdl024/(xmdl026/100+1)*(case when glaa001='HKD' AND ooao005 is NOT null THEN
COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
when glaa001='USD' AND xmdl025 LIKE 'P%'THEN (xmdl022*xmdl024/(xmdl026/100+1)*(case when glaa001='USD' AND ooao005 is NOT null THEN
COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
when glaa001='EUR'AND xmdl025 LIKE'P%'THEN (xmdl022*xmdl024/(xmdl026/100+1)*(case when glaa001='EUR'AND ooao005 is NOT null THEN 
COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
when glaa001='JPY'AND xmdl025 LIKE'P%'THEN
(xmdl022*xmdl024/(xmdl026/100+1)*(case when glaa001='JPY' AND ooao005 is NOT null THEN
COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
when glaa001='RMB' AND xmdl025 LIKE 'W%'THEN
(xmdl022*xmdl024*(case when glaa001='RMB' AND ooao005 is NOT null THEN COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
when glaa001='HKD'AND xmdl025 LIKE'W%'THEN 
(xmdl022*xmdl024*(case when glaa001='HKD' AND ooao005 is NOT null THEN COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
when glaa001='USD' AND xmdl025 LIKE'W%'THEN 
(xmdl022*xmdl024*(case when glaa001='USD' AND ooao005 is NOT null THEN COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
when glaa001='EUR'AND xmdl025 LIKE'W%'THEN (xmdl022*xmdl024*(case when glaa001='EUR' AND ooao005 is NOT null THEN COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
when glaa001='JPY'AND xmdl025 LIKE'W%'THEN (xmdl022*xmdl024*(case when glaa001='JPY' AND ooao005 is NOT null THEN COALESCE(ooao005,0)ELSE COALESCE(xmdk017,0)END))
ELSE 0 end )as jg

from xmdk_t left join xmdl_t on xmdlent=xmdkent AND xmdldocno=xmdkdocno left join imaal_t on imaalent=xmdlent and imaal001=xmdl008 and imaal002='zh_CN'
LEFT JOIN pmaal_t ON pmaalent=xmdkent AND pmaal001=xmdk009
left join pmaa_t ON pmaaent=xmdkent AND pmaa001=xmdk009
left join ooao_t on ooaoent=xmdkent and ooao004=to_char(xmdk001,'yyyymm')and ooao002=xmdk016 and ooao001='01' and ooao003='RMB'
LEFT JOIN glaa_t on glaaent=xmdkent and xmdksite=glaald WHERE xmdksite in('SU','TS','SZ','US','HK') and xmdk007 not in('00001','00010','T0159','T0160','T0164','XTEMP')--不包括内部订单
and pmaa093 not in('03')--废料回收即是供应商又是客户
and xmdk001>=TRUNC(NEXT_DAY(SYSDATE-8,1)-6)AND xmdk001<TRUNC(NEXT_DAY(SYSDATE-8,1)+1)--查询上周
AND xmdkstus='S' and xmdk000 IN('1','2','6')and xmdkent=100)
where jg>0) 

df_weekly = data[7] if len(data) > 6 else pd.DataFrame() if not df_weekly.empty: try: # 直接使用日期字符串,不进行datetime转换 this_week = df_weekly[df_weekly['本周销售额'].notnull()].copy() last_week = df_weekly[df_weekly['上周销售额'].notnull()].copy() if not this_week.empty and not last_week.empty: # 直接使用日期作为x轴标签 plt.figure(figsize=(10, 6)) # 绘制本周曲线(使用索引作为x值) plt.plot(range(len(this_week)), this_week['本周销售额'], color='red', marker='o', linestyle='-', linewidth=2, label='本周') # 添加本周数据标签 for i, sales in enumerate(this_week['本周销售额']): plt.annotate(f"{sales:.2f}", xy=(i, sales), xytext=(0, 10), textcoords="offset points", ha='center', fontsize=9, color='red') # 绘制上周曲线 plt.plot(range(len(last_week)), last_week['上周销售额'], color='green', marker='s', linestyle='-', linewidth=2, label='上周') # 添加上周数据标签 for i, sales in enumerate(last_week['上周销售额']): plt.annotate(f"{sales:.2f}", xy=(i, sales), xytext=(0, -15), textcoords="offset points", ha='center', fontsize=9, color='green') # 设置x轴标签为日期 plt.xticks(range(len(this_week)), this_week['日期'], rotation=45) plt.title('本周与上周每日销售对比', fontsize=12) plt.xlabel('日期', fontsize=10) plt.ylabel('销售额', fontsize=10) plt.grid(True, linestyle='--', alpha=0.7) plt.legend(fontsize=9) plt.tight_layout() # 保存图表 chart_buffer = BytesIO() plt.savefig(chart_buffer, format='png', dpi=150) plt.close() elements.append(Image(chart_buffer, width=8.5 * inch, height=5 * inch)) elements.append(Spacer(1, 0.2 * inch)) except Exception as e: print(f"生成周销售对比图时出错: {str(e)}") print("跳过周销售对比图生成") 横坐标改为星期
08-21
# 获取周销售数据(第7个查询结果) df_weekly = data[7] if len(data) > 6 else pd.DataFrame() # 添加周销售对比图 if not df_weekly.empty: # 提取本周和上周数据 this_week = df_weekly[df_weekly['本周销售额'].notnull()] last_week = df_weekly[df_weekly['上周销售额'].notnull()] # 确保数据不为空 if not this_week.empty and not last_week.empty: # 调整图表大小 plt.figure(figsize=(8, 5)) # 减小图表尺寸 # 转换日期格式并获取星期几 this_week['日期'] = pd.to_datetime(this_week['日期']) this_week['星期'] = this_week['日期'].dt.day_name('zh_CN') # 获取中文星期名称 last_week['日期'] = pd.to_datetime(last_week['日期']) last_week['星期'] = last_week['日期'].dt.day_name('zh_CN') # 获取中文星期名称 # 创建星期顺序映射 weekday_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] weekday_map = { 'Monday': '周一', 'Tuesday': '周二', 'Wednesday': '周三', 'Thursday': '周四', 'Friday': '周五', 'Saturday': '周六', 'Sunday': '周日' } # 按星期顺序排序 this_week['weekday_num'] = this_week['日期'].dt.dayofweek this_week = this_week.sort_values('weekday_num') last_week['weekday_num'] = last_week['日期'].dt.dayofweek last_week = last_week.sort_values('weekday_num') # 获取中文星期标签 this_week_labels = [weekday_map[d] for d in this_week['日期'].dt.day_name()] last_week_labels = [weekday_map[d] for d in last_week['日期'].dt.day_name()] # 绘制本周曲线(红色) plt.plot(this_week_labels, this_week['本周销售额'], color='red', marker='o', linestyle='-', linewidth=2, label='本周') # 添加本周数据标签 for i, (label, sales) in enumerate(zip(this_week_labels, this_week['本周销售额'])): plt.text(i, sales, f'{sales:.2f}', ha='center', va='bottom', fontsize=9, color='red') # 绘制上周曲线(绿色) plt.plot(last_week_labels, last_week['上周销售额'], color='green', marker='s', linestyle='-', linewidth=2, label='上周') # 添加上周数据标签 for i, (label, sales) in enumerate(zip(last_week_labels, last_week['上周销售额'])): plt.text(i, sales, f'{sales:.2f}', ha='center', va='top', fontsize=9, color='green') # 设置图表属性 plt.title('本周与上周每日销售对比', fontsize=12) # 减小标题字体 plt.xlabel('星期', fontsize=10) # 减小标签字体 plt.ylabel('销售额', fontsize=10) # 减小标签字体 plt.grid(True, linestyle='--', alpha=0.7) plt.legend(fontsize=9) # 减小图例字体 plt.tight_layout() # 将图表保存到缓冲区 chart_buffer = BytesIO() plt.savefig(chart_buffer, format='png', dpi=150) plt.close() # 添加图表到PDF(减小尺寸) elements.append(Image(chart_buffer, width=6.5 * inch, height=4 * inch)) elements.append(Spacer(1, 0.2 * inch)) else: print("警告:未获取到完整的周销售数据,无法生成对比图") else: print("警告:未获取到周销售数据,无法生成对比图")修改代码,是数据标签不互相遮挡
08-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值