精华内容
下载资源
问答
  • 这些数据更多时候,我们希望看到是一个同比的情况,而且是农历同比,比如钢铁库存、水泥产量、建材成交量等等,所以就涉及计算去年同比的一个问题了。下面代码就是在当前有数据时间列表中,找到去年...

    在进行宏观数据和中观数据研究分析分的时候,经常会用到同比的概念。宏观数据一般都是月度的,所以一般一二月份由于春节效应,会合起来考虑;但是中观数据的频率有时候会比较高,比如周度或者旬度的数据。

    这些数据更多的时候,我们希望看到的是一个同比的情况,而且是农历同比,比如钢铁的库存、水泥的产量、建材的成交量等等,所以就涉及计算去年同比的一个问题了。下面的代码就是在当前的有数据的时间列表中,找到去年同比最近的一天,可以是农历也可以是公历。

    import sxtwl

    def find_previous_day(current_date, date_list, lunna=True):

    # 用于寻找前一年与当前时间点最接近的日期,公历或者农历都可以

    cur_date = pd.to_datetime(current_date)

    if lunna: # 农历同比

    lunar = sxtwl.Lunar()

    _lunnar_new_year = lunar.getDayByLunar(cur_date.year, 01, 01, False)

    lunnar_new_year = pd.to_datetime('%s-%s-%s' % (_lunnar_new_year.y, _lunnar_new_year.m, _lunnar_new_year.d))

    if lunnar_new_year > cur_date:

    # 当前不是农历新年后的时间

    _lunnar_new_year = lunar.getDayByLunar(cur_date.year - 1, 01, 01, False)

    lunnar_new_year = pd.to_datetime('%s-%s-%s' % (_lunnar_new_year.y, _lunnar_new_year.m, _lunnar_new_year.d))

    _lunnar_last_new_year = lunar.getDayByLunar(lunnar_new_year.year - 1, 01, 01, False)

    lunnar_last_new_year = pd.to_datetime('%s-%s-%s' % (_lunnar_last_new_year.y, _lunnar_last_new_year.m, _lunnar_last_new_year.d))

    most_recent_date = lunnar_last_new_year + (cur_date - lunnar_new_year)

    return date_list[np.array([abs((date - most_recent_date).days) for date in pd.to_datetime(date_list)]).argmin()]

    else:

    return date_list[np.array([abs((date - cur_date).days + 365) for date in pd.to_datetime(date_list)]).argmin()]

    current_date就是希望寻找去年同期的当前时间点,而date_list则是全历史的可选日期,也就是,我们会找一个最近的同比日期。lunna就是是否是农历的flag了。

    本文同步分享在 博客“钱塘小甲子”(CSDN)。

    如有侵权,请联系 support@oschina.cn 删除。

    本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

    展开全文
  • 同比与环比区别

    千次阅读 2019-03-31 23:42:40
    区别: 1、同比和环比,这两者所反映的虽然都是变化速度,但由于采用基期的不同...2、同比:与历史同时期比较,就是与不同年份的同一时期作比较,例如2005年7月份与2004年7月份相比,叫同比。如图2012年5月与2013年...

    区别:

    1、同比和环比,这两者所反映的虽然都是变化速度,但由于采用基期的不同,其反映的内涵是完全不同的;

    一般来说,环比可以与环比相比较,而不能拿同比与环比相比较;而对于同一个地方,考虑时间纵向上发展趋势的反映,则往往要把同比与环比放在一起进行对照。

    2、同比:与历史同时期比较,就是与不同年份的同一时期作比较,例如2005年7月份与2004年7月份相比,叫同比。如图2012年5月与2013年5月对比就叫做同比。

     

    同比,比如,2012年3月比2011年3月叫同比。
    环比,比如,2012年3月比2012年2月叫环比。

    展开全文
  • 大体思路:MySQL没有类似oracle方便统计函数,只能靠自己去硬计算:通过时间字段直接增加年份、月份,然后通过left join关联时间字段去计算环比、同比公式即可原始表结构:求同比SQL:--按年同比SELECTt5.*,...

    大体思路:

    MySQL没有类似oracle方便的统计函数,只能靠自己去硬计算:通过时间字段直接增加年份、月份,然后通过left join关联时间字段去计算环比、同比公式即可

    原始表结构:

    求同比SQL:

    -- 按年同比

    SELECTt5.*,CASEWHENt5.last_energy_yearISNULLORt5.last_energy_year =0THEN0.00

    ELSEFORMAT(((t5.energy_year - t5.last_energy_year)/t5.last_energy_year)*100,2)

    ENDYoY-- 同比

    FROM(

    SELECTt3.*,t4.last_energy_year

    FROM

    (

    SELECTDATE_FORMAT(CONCAT(t1.`tyear`,‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘)ASYearMonth,t1.tyear,SUM(t1.energy_month) energy_year,t1.linename

    FROM(SELECT

    t.*,COUNT(DISTINCTt.`tyear`,t.`tmonth`,t.`linename`) c_cot

    FROM`ksh_tgyjy_llxgyjydlxx` t

    GROUPBYt.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1

    GROUPBYt1.tyear,t1.`linename`

    ) t3

    LEFTJOIN

    (

    SELECTDATE_ADD(DATE_FORMAT(CONCAT(t1.`tyear`,‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘),INTERVAL 1YEAR)ASlastYearMonth,t1.tyear,SUM(t1.energy_month) last_energy_year,t1.linename

    FROM(SELECTt.*,COUNT(DISTINCTt.`tyear`,t.`tmonth`,t.`linename`) c_cot

    FROM`ksh_tgyjy_llxgyjydlxx` t

    GROUPBYt.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1

    GROUPBYt1.tyear,t1.`linename`

    ) t4

    ONt3.YearMonth = t4.lastYearMonth

    ANDt3.linename = t4.linename

    ) t5-- 按年同比SELECT t5.*, CASE WHEN t5.last_energy_year IS NULL OR t5.last_energy_year =0 THEN 0.00                ELSE FORMAT(((t5.energy_year - t5.last_energy_year)/t5.last_energy_year)*100,2)         END YoY  -- 同比FROM (    SELECT t3.*,t4.last_energy_year    FROM     (       SELECT DATE_FORMAT(CONCAT(t1.`tyear`, ‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘) AS YearMonth,t1.tyear,SUM(t1.energy_month) energy_year,t1.linename        FROM(SELECT         t.*,COUNT(DISTINCT t.`tyear`,t.`tmonth`,t.`linename`) c_cot         FROM `ksh_tgyjy_llxgyjydlxx` t         GROUP BY t.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1        GROUP BY t1.tyear,t1.`linename`     ) t3       LEFT JOIN     (      SELECT DATE_ADD(DATE_FORMAT(CONCAT(t1.`tyear`, ‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘),INTERVAL 1 YEAR) AS lastYearMonth,t1.tyear,SUM(t1.energy_month) last_energy_year,t1.linename        FROM(SELECT t.*,COUNT(DISTINCT t.`tyear`,t.`tmonth`,t.`linename`) c_cot         FROM `ksh_tgyjy_llxgyjydlxx` t         GROUP BY t.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1        GROUP BY t1.tyear,t1.`linename`    ) t4    ON t3.YearMonth = t4.lastYearMonth    AND t3.linename = t4.linename ) t5

    查询结果:

    求月环比SQL:

    -- 按月同比

    SELECTDATE_FORMAT(t5.YearMonth,‘%Y-%m‘) YearMonth,t5.`linename`,t5.`energy_month`,

    CASEWHENt5.lat_energy_monthISNULLORt5.lat_energy_month=0THEN0.00

    ELSEFORMAT(((t5.energy_month - t5.lat_energy_month)/t5.lat_energy_month)*100,2)

    ENDYoY

    FROM(

    SELECTt3.*,t4.energy_month lat_energy_month

    FROM

    (

    SELECTDATE_FORMAT(CONCAT(t1.`tyear`,‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘)ASYearMonth,t1.*

    FROM(SELECT

    t.*,COUNT(DISTINCTt.`tyear`,t.`tmonth`,t.`linename`) c_cot

    FROM`ksh_tgyjy_llxgyjydlxx` t

    GROUPBYt.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1

    ) t3

    LEFTJOIN

    (

    SELECTDATE_ADD(DATE_FORMAT(CONCAT(t1.`tyear`,‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘),INTERVAL 1YEAR)ASlastYearMonth,t1.*

    FROM(SELECTt.*,COUNT(DISTINCTt.`tyear`,t.`tmonth`,t.`linename`) c_cot

    FROM`ksh_tgyjy_llxgyjydlxx` t

    GROUPBYt.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1

    ) t4

    ONt3.YearMonth = t4.lastYearMonth

    ANDt3.linename = t4.linename

    ) t5-- 按月同比SELECT DATE_FORMAT(t5.YearMonth,‘%Y-%m‘) YearMonth,t5.`linename`,t5.`energy_month`,          CASE WHEN t5.lat_energy_month IS NULL OR t5.lat_energy_month=0 THEN 0.00                 ELSE FORMAT(((t5.energy_month - t5.lat_energy_month)/t5.lat_energy_month)*100,2)         END YoYFROM (    SELECT t3.*,t4.energy_month lat_energy_month     FROM     (      SELECT DATE_FORMAT(CONCAT(t1.`tyear`, ‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘) AS YearMonth,t1.*        FROM(SELECT           t.*,COUNT(DISTINCT t.`tyear`,t.`tmonth`,t.`linename`) c_cot           FROM `ksh_tgyjy_llxgyjydlxx` t           GROUP BY t.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1     ) t3        LEFT JOIN     (      SELECT DATE_ADD(DATE_FORMAT(CONCAT(t1.`tyear`, ‘-‘, t1.`tmonth`,‘-01‘),‘%Y-%m-%d‘),INTERVAL 1 YEAR) AS lastYearMonth,t1.*         FROM(SELECT t.*,COUNT(DISTINCT t.`tyear`,t.`tmonth`,t.`linename`) c_cot         FROM `ksh_tgyjy_llxgyjydlxx` t         GROUP BY t.`linename`,t.`tyear`,t.`tmonth`,t.`linename`) t1    ) t4    ON t3.YearMonth = t4.lastYearMonth    AND t3.linename = t4.linename) t5

    查询结果:

    展开全文
  • 商业情景YTD分析属于同比分析类,其特点在于对比汇总值,即从年初第一日值一直至今的值累加。作用在于分析企业中长期的...可视化实现折线图和区域图组合,折线图适用于呈现日期变化下不同年份的绩效走势,而区域图适...

    商业情景

    YTD分析属于同比分析类,其特点在于对比汇总值,即从年初第一日值一直至今的值累加。作用在于分析企业中长期的经营绩效。

    在YTD日期同比中需要注意的是取等量日期单位作为参照物。举例而言,假设当前日期是2018年7月21日,其同比计算则应为去年7月1号至21号的销售值对比,而不是对比2018年7月整个月份的值。

    cae376948bac97723fffcc2f707dfcaf.png

    可视化实现

    折线图和区域图组合,折线图适用于呈现日期变化下不同年份的绩效走势,而区域图适用将不同年份绩效的汇总差异展示为区域面积。

    如下图(图1)为YTD汇总同比用于分析年初至今中期经营绩效的对比变化。

    1a8acb0d1f0df0e1509df220fea7e004.png

    图1

    解题思路

    1. 依据2018年的最新记录日期为判断标准,推出去年对应的最新日期

    2. 依据步骤1中得出日期范围值,算出合计结果,最后做同比计算

    实现方法

    首先参照前文创建一张日历表并与事实表进行关联(参考第2.3节内容):

    最新订单日期公式,公式中的ALL是取表中所有行的最大订单日期,而不受筛选上下文的影响:

    最新订单日期 = MAXX(ALL('订单'),[订单日期])

    创建销售YTD汇总公式,公式中的DATESYTD是智能时间函数,自动对应的日期:

    YTD销售汇总 1 = CALCULATE ( SUM ( '订单'[销售额] ), DATESYTD ( '日期表'[Date]) )

    通过折线图呈现2017与2018年的销售累积,如下图(图2):

    注意【图例】为【年】

    6af79f07ad65e8116f30b09413d7f3d4.png

    图2

    DAX中没有类似Tableau DATEPART一样的函数,需要DATE与FIRSTDATE函数创建公式【最新同比日期】代替:

    最新同比日期 = DATE(YEAR(FIRSTDATE('日期表'[Date])),MONTH([最新订单日期]), DAY([最新订单日期]))

    该公式依据【日期筛选段】的值返回该对应的月和日,依据表中所给出的维度返回年,如下图(图3)所示。

    9599b049e955ddcbbcf0b99ebbc1616b.png

    图3

    创建判断公式日期筛选段,用于判断表中日期是否小于最新同比日期:

    日期筛选段 = MIN( '日期表'[Date]) < [最新同比日期]

    公式中的MIN是用于聚合[Date]字段为度量,直接用'日期表'[Date] < [最新同比日期]会报错,如下图(图4)所示,原因是字段无法和度量直接比较:

    771d3f650d2ba6dc050912eb3d658a0a.png

    图4

    继续创建新度量,用于汇总销售额,这时公式中的IF用于判断是否为YTD值。

    YTD销售汇总 2 =

    IF (

    [日期筛选段],

    CALCULATE ( SUM ( '订单'[销售额] ), DATESYTD ( '日期表'[Date] )

    ) )

    将日期与创建度量放置表中,结果如下图(图5)所示。

    69ca87058dc0162546859dab7dfee2d7.png

    图5

    2017.7.20正确显示汇总金额 1,781,576。

    将图5中的表格换为折线图,如下图(图6)所示,但发现此时的2017YTD变为1,865,199.49实为2017.7月末汇总值,而不是月中21日汇总1,781,576。其原因是Power BI需要【日】维度作用于筛选上下文,YTD才可精确值日维度。

    3c7b14bfec1999d0fff2cb2b93ff1229.png

    图6

    在【轴】放入【日】字段,进行下钻,此处的2017YTD为正确值,但可视化效果则不如用月单位直观。暂时仍然上钻至月层级,便于视觉呈现

    89a1367ce764981c0cf40eb70dfa0f3b.png

    图7

    另外,我们需要得出去年至2017年7月21日的销售汇总,公式中的SAMEPERIODLASTYEAR属于时间智能函数,依据筛选上下文的日期,返回去年对应日期范围:

    去年YTD = CALCULATE([YTD销售汇总 2],SAMEPERIODLASTYEAR('日期表'[Date]))

    最后创建度量计算销售额同比之差,参照下图(图8)配置堆积图:

    汇总差异 = [YTD销售汇总 2]-[去年YTD]

    80553ca9aa5a520af3e8f50d2a2996bf.png

    图8

    最终分析呈现如下图(图9)所示,默认轴单位显示为【月】,在需要下钻时可看到【日】级别YTD。

    1a8acb0d1f0df0e1509df220fea7e004.png

    图9

    推荐阅读

    Power BI文件夹管理,99%的人都不知道的技巧

    Power BI性能提升的10大秘密武器(续)

    Azure Synapse Analytics和Power BI的性能改进

    万亿行数据怎么办?重磅推荐Power BI中的聚合

    Power BI 3月产品功能更新讲解 —— 视频上线

    展开全文
  • 大体思路:MySQL没有类似oracle方便统计函数,只能靠自己去硬计算:通过时间字段直接增加年份、月份,然后通过left join关联时间字段去计算环比、同比公式即可原始表结构:求同比SQL:-- 按年同比SELECT t5.*, ...
  • 大体思路:MySQL没有类似oracle方便统计函数,只能靠自己去硬计算:通过时间字段直接增加年份、月份,然后通过left join关联时间字段去计算环比、同比公式即可原始表结构:求同比SQL:--按年同比SELECTt5.*,...
  • sql语句下的同比,环比操作

    千次阅读 2020-07-01 00:44:26
    sql语句下的同比,环比操作 题目:有两个表 表一:销售明细 表二:产品明细 需求:查询2020年,每月的销售额,以及同比环比,并按照年月进行升序排序 建数据库 建表 插入数据 偷个懒,这些语句就先省略了 给看个截图...
  • 同比:与历史同时期比较,就是与不同年份的同一时期作比较,例如2005年3月份与2004年3月份相比,叫同比。 环比:与上一统计段比较就是与前一个相邻的时期作比较,例如2005年4月份与2005年5月份相比较,叫环比。 在...
  • MySQL统计同比环比SQL

    万次阅读 2018-03-05 14:23:49
    大体思路:MySQL没有类似oracle方便统计函数,只能靠自己去硬计算:通过时间字段直接增加年份、月份,然后通过left join关联时间字段去计算环比、同比公式即可原始表结构:求同比SQL:-- 按年同比 SELECT t5.*, ...
  • Tableau同比或环比计算方法

    千次阅读 2020-08-27 09:26:32
    笔者借鉴学习了6种tableau同比或环比计算方法 方法1:官方提供快速表计算:年度同比增长 方法2:筛选年份同比上一年 方法3:通过设定日期月度范围来比较销售额 方法4:
  • /// ///生成计算同比环比查询语句///table:表名称;statColumns:要统计值字段;yearColumn:年份字段名;monthColumn:月份字段名;joinColumns:除年月外连接条件///--上期无值或0本期有值不为0:1///--上期有值...
  • /// 生成计算同比环比查询语句 /// table:表名称;statColumns:要统计值字段;yearColumn:年份字段名;monthColumn:月份字段名;joinColumns:除年月外连接条件 /// --上期无值或0本期有值不为0:1 ...
  • 1月28日消息,据国外媒体报道,在特斯拉的财报发布之前...特斯拉在财报中表示,他们正按计划尽快提高他们的制造能力,在多年的时间里,他们预计电动汽车交付量的年平均增长率会达到50%,部分年份的增长了可能会更高...
  • 在物理表设计阶段针对这类报表问题进行特殊处理,物理表数据结构设计如下:字段描述IdIDProject项目Amount本月投资额TotalAmount累计投资额(截止本期)Year年份Month月份增加了TotalAmount字段记录截止本月累计投资...
  • 美国太阳能装机量在二季度同比飙升43%。主要原因是,太阳能装机开发商原先预期太阳能税收补贴将在年底前到期,赶在截止日前集中上量。 美国太阳能协会数据显示,美国二季度新增太阳能发电能力2051兆瓦,去年同期仅为...
  • 更好阅读-源码

    2021-02-11 22:20:19
    死书更好阅读项目 背景 五年级时候,我决定如果我想变得聪明,就必须读书。 我走进一家书店,问工作人员我应该读什么。 这是对美丽迷恋开始,从笔记本中列表到Excel工作表,再到这个项目。 这确实是我...
  • 2020,一个多么特殊的年份——在这一年里实现国内生产总值和城乡居民人均收入20XX年翻一番,全面建成小康社会。到本世纪中叶建成富强民主文明和谐社会主义现代化国家,实现中华民族伟大复兴!这是一个多么伟大...
  • 每一次成长都伴随着欢笑或者泪水,每一次的寻找工作都像是对自己说:"为了梦想,而不仅仅是为了生存...准确的说,我现在是准毕业生,即将在2012——这个特殊的年份完成我学习的旅程,但是我的求职之路却同年级的同...
  • 量价齐跌,可能是电视行业在过去几...2020年是个特殊的年份,让外界对家电市场有了新认知:包括电视在内家电消费活动几乎被冰封,但大尺寸电视销量却在稳步提升,同比增幅高达50%以上。于是有人梳理出了电视行业
  •  这里需要注意是——去年同期是指与去年月份比值,无对应月份则为空;要求只显示本年数据。  这个报表麻烦之处在于需要较复杂数据计算工作,但一般报表工具计算能力较弱,如果采用报表工具本身来...
  •  一、借“时”发挥 就职演讲总有具体化特定时间,有领导干部巧借就职年份这个特定时间尽情发挥,非常成功.贵州省福泉县连任县长李琨代表正副县长在县人代会闭幕式上作就职演讲,其中有一段就是借就任时间作...
  • 净亏损为1.517亿元,同比收窄93.8%。其中,2020年汽车销售收入为92.8亿元。 据了解,理想汽车2019年12月开始交付理想ONE,2020年为其第一个完整交付的年份。数据显示,理想汽车2020年度.
  • 去年已是中国股市高估值的年份,08年市场仍然有望维持相对强势。在其他资产市场也同样高估情况下,不少理性资金依旧对A股市场保持关注,那么价值...07年度三季度财报显示,000429每股录得0.34元盈利,同比增长4...
  • mysql数据分析SQL

    2020-03-30 10:54:08
    例如,2019年7月份与2018年7月份相比,就是与不同年份的同一时期作比较,叫同比。 SELECT 本月时间, CASE WHEN 2019-07数据 IS NULL OR 2019-07数据 = 0 THEN 0 ELSE 2019-07数据 END 2019-07数据, CASE WHEN ...
  • 财务Demo——Power BI

    2019-09-11 16:57:03
    为某公司制作的财务报表图形Demo 1 历史数据的展示 (1)历史年份的人头数与人均利润 (2)收入与成本随部门的变化 ...(1)卡片图展示收入,同比上年增长及同比增长率 (2)环形图展示各项收入所占比例 (...
  • 12) 查询学生姓名和出生年份(今年2003年) 13) 查询没有成绩学生学号和课程号 14) 查询总成绩大于200分学生学号 15) 查询每门课程不及格学生人数 16) 查询不及格课程超过3门学生学号 17)...
  • --同比值 mtb varchar2(30); --同比时间 mtbtime varchar2(10); --环比值 mhb varchar2(30); --环比时间 mhbtime varchar2(10); --今年累计 jnlj varchar2(30); --今年累计时间...
  • 牛年经典婚礼贺词.doc

    2021-01-15 14:59:52
    牛年经典婚礼贺词 牛年是一个勤奋、耕耘的年份,当然也是举行婚礼年份。送上XX年最最经典新婚贺词,祝福所有新人们婚姻幸福,阖家欢乐! 结婚祝福语句: 愿你俩恩恩爱爱,意笃情深,此生爱情永恒,爱心...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

年份的同比