数据处理—添加一个累计销量字段

数据处理—添加一个累计销量字段,第1张

在mysql中有一个以下字段内容的数据表data,现在希望能够增加一个字段“本期止累计”作为当月累计销量的记录,比如2月份的本期止累计是1-2月份销量的合计,3月份的本期止累计是1-3月份销量的合计,本文通过Python和SQL两种方法来实现:

Python方法:

Python方法主要是通过pandas读取mysql中的数据再处理实现:

import pandas as pd
from sqlalchemy import create_engine

engine=create_engine('mysql+pymysql://账户:密码@数据库IP')
sql = "'select * from data;'" 
df1=pd.read_sql_query(sql, engine)#从mysql获取数据df1
def def1(x):
    dfn=df1.loc[(df1['年份']==x['年份'])&(df1['月份']<=x['月份'])&(df1['企业']==x['企业'])]
    return dfn['销量'].sum()   #定义函数def1 计算销量合计
df1['本期止累计']=df1.apply(def1,axis = 1)
df1.to_excel('结果.xlsx')

 SQL方法:

SQL方法则相对简单一些

SELECT
	*,(
	SELECT
		SUM(本月销量) 
	FROM
		data T 
	WHERE
		T.年份 = A.年份 
		AND T.月份 <= A.月份 
		AND T.企业 = A.企业
	) 本期止累计 
FROM
	data A

不过以上两种方法必须保证是企业、年份、月份三个字段组合的唯一性,比如企业1有两条2011年1月份的销量记录,就会出现问题,在处理之前进行聚合来保证企业、年份、月份三个字段组合的唯一性。

Python可以采用

df1=df1.groupby(['年份','月份','企业']).agg(sum)

SQL 可以采用

WITH data1 as (select 年份,月份,企业,sum(销量) 销量 from data)

对数据进行聚合

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/730279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存