精华内容
下载资源
问答
  • 报表同比环比sql笔记

    2020-06-11 09:54:11
    SELECT ...工资 AS 同比工资, d.营收 AS 同比营收, e.工资 AS 环比工资, e.营收 AS 环比营收 FROM 工资科目分析总_本地 c LEFT JOIN ( SELECT a.日期 AS 日期, b.日期 as 对比日期, a.部门...

    数据

        

     

    SELECT
        c.部门 AS 部门,
        c.日期 AS 对比年月,
        c.工资 AS 本期工资,
        c.营收 AS 本期营收,
        d.工资 AS 同比工资,
        d.营收 AS 同比营收,
        e.工资 AS 环比工资,
        e.营收 AS 环比营收 
    FROM
        工资科目分析总_本地 c
        LEFT JOIN (
        SELECT
            a.日期 AS 日期,
            b.日期 as 对比日期,
            a.部门 AS 部门,
            a.工资 AS 工资,
            a.营收 AS 营收
        FROM
            工资科目分析总_本地 a
            --sqllite写法 strftime('%Y-%m-%d',a.SalesDate)=strftime('%Y-%m-%d',b.SalesDate,'-1 year') 

           --sqlserver 写法 a.日期= a.日期 = DateAdd( YEAR, - 1, b.日期 ) 
            JOIN 工资科目分析总_本地 b ON strftime('%Y-%m-%d',a.日期) = strftime('%Y-%m-%d',b.日期,'-1 year') 
            AND a.部门 = b.部门 
        ) d 
        ON c.日期 = d.对比日期 
        AND c.部门 = d.部门
        LEFT JOIN (
        SELECT
            a.日期 AS 日期,
            b.日期 as 对比日期,
            a.部门 AS 部门,
            a.工资 AS 工资,
            a.营收 AS 营收 
        FROM
            工资科目分析总_本地 a
            ----strftime('%Y-%m-%d',a.SalesDate)=strftime('%Y-%m-%d',b.SalesDate,'-1 year') 
            JOIN 工资科目分析总_本地 b ON strftime('%Y-%m-%d',a.日期) = strftime('%Y-%m-%d',b.日期,'-1 month') 
            AND a.部门 = b.部门 
        ) e 
        ON c.日期 = e.对比日期 
        AND c.部门 = e.部门

    展开全文
  • MySQL统计同比环比SQL

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

    大体思路:

     

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

     

    原始表结构:

    求同比SQL:

    -- 按年同比
    
    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:

    -- 按月同比
    
    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 YoY
    FROM ( 
       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
    

    查询结果:

    展开全文
  • 同比环比sql实例

    2021-01-12 23:05:22
    同比就是今年第n月与去年第n月比。建测试表,假设是个销售数量表:createtablet(dtdate,cntnumber);随便插入些测试数据,最后表的内容如下:DTCNT--------------------2012-02-09152012-02-2122012-03-2312012-03-...

    环比就是今年第

    n

    月与第

    n-1

    月或第

    n+1

    月比;同比就是今年第

    n

    月与去年第

    n

    月比。

    建测试表,假设是个销售数量表:

    create table t (dt date,cnt number);

    随便插入些测试数据,最后表的内容如下:

    DT CNT

    ---------- ----------

    2012-02-09 15

    2012-02-21 2

    2012-03-23 1

    2012-03-23 5

    2012-04-23 2

    2012-05-12 20

    2012-07-01 20

    2012-07-21 20

    显示环比,如果某个月没有销售,就有点儿麻烦。

    先想个办法,显示本年度的

    1

    12

    月,有个很有技巧的技术来实现:

    SQL> set pagesize 20

    SQL> with m as (select '2012-'||lpad(rownum,2,'0') v from dual connect by level<=12)

    select *

    from m;

    V

    ---------

    2012-01

    2012-02

    2012-03

    2012-04

    2012-05

    2012-06

    2012-07

    2012-08

    2012-09

    2012-10

    2012-11

    2012-12

    接下来就容易了,两个表外连,使用

    lag

    统计函数就可以了。

    with m as (select '2012-'||lpad(rownum,2,'0') v from dual connect by level<=12)

    select m.v "

    月份

    ",nvl(sum(t.cnt),0) "

    销售数量

    ",

    lag(nvl(sum(t.cnt),0),1) over (order by m.v) "

    上月销量数量

    ",

    nvl(sum(t.cnt),0)-lag(nvl(sum(t.cnt),0),1) over (order by m.v) "

    环比增加量

    ",

    round((case

    when

    nvl(sum(t.cnt),0)=0

    then

    null

    else

    (nvl(sum(t.cnt),0)-lag(nvl(sum(t.cnt),0),1)

    over (order by m.v))/nvl(sum(t.cnt),0) end)*100,1) "

    环比增加比例

    (%)"

    展开全文
  • sql同比环比 简单示例

    千次阅读 2019-12-12 17:46:58
    SQL同比-简单示例 同比:一般情况下是今年第n月与去年第n月比 创建一个简单的登录活动记录表 drop table if EXISTS logintime; create table logintime ( logincode VARCHAR(10), usercode VARCHAR(10...

    SQL同比-简单示例

    同比:一般情况下是今年第n月与去年第n月比

    1. 创建一个简单的登录活动记录表
    drop table if EXISTS logintime;
    create table logintime (
    logincode VARCHAR(10),
    usercode VARCHAR(10),
    username VARCHAR(10),
    logintime TIMESTAMP
    );
    
    1. 插入数据
    insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 8:01:12');
    insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 10:01:04');
    insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 12:05:28');
    insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 13:03:36');
    insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 15:07:57');
    insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 18:01:22');
    insert into logintime values('acd001','aqc985654','王俊名','2019-12-12 20:10:42');
    insert into logintime values('acd001','aqc985654','王俊名','2018-12-12 10:23:45');
    insert into logintime values('acd001','aqc985654','王俊名','2018-12-12 12:11:23');
    insert into logintime values('acd001','aqc985654','王俊名','2018-12-12 15:14:33');
    insert into logintime values('acd001','aqc985654','王俊名','2018-12-12 20:35:01');
    
    1. 查询 看一看数据什么样
    select * from logintime;
    

    查看同比示例原表数据.

    -- 今年双12
    select count(0) logincountnow from logintime where date(logintime)= '2019-12-12';
    -- 去年双12
    select count(0) logincountlastyear from logintime where date(logintime)= '2018-12-12';
    

    同比示例今年双12
    同比示例去年双12.
    4.同比操作

    -- 同比操作
    SELECT
    	t.username,
    	t.logincountnow,
    	t2.logincountlastyear,
    	( t.logincountnow / t2.logincountlastyear ) - 1 AS rat -- 这个列就是你要的同比增长值
    FROM
    	-- 主数据
    	( SELECT t.username, count( 0 ) logincountnow FROM logintime t WHERE date(logintime)= '2019-12-12' GROUP BY t.username ) t
    	LEFT JOIN 
    	-- 对比数据
    	( SELECT t.username, count( 0 ) logincountlastyear FROM logintime t WHERE date(logintime)= '2018-12-12' GROUP BY t.username ) t2 
    	ON t.username = t2.username;
    

    同比示例结果图

    简单来讲就是拿出数据表的同时间长度内相对位置点的一致的数据进行对比。这个相对的点时间单位可以是时分秒,也可以是日月年。
    同比时间轴示例.

    SQL环比-简单示例

    环比:表示连续2个统计周期(比如连续两月)内的量的变化比。

    简单讲:就是两个连续的时间长度内数据量的变化
    还是在之前的表里加入一些数据

    insert into logintime values('acd001','aqc985654','王俊名','2019-07-07 18:01:22');
    insert into logintime values('acd001','aqc985654','王俊名','2019-07-08 20:10:42');
    insert into logintime values('acd001','aqc985654','王俊名','2018-01-01 10:23:45');
    insert into logintime values('acd001','aqc985654','王俊名','2018-03-18 12:11:23');
    insert into logintime values('acd001','aqc985654','王俊名','2018-07-07 15:14:33');
    insert into logintime values('acd001','aqc985654','王俊名','2018-11-11 20:35:01');
    

    执行一下代码查看一下

    select count(0) logincountnow from logintime where year(logintime) = '2019';
    select count(0) logincountlastyear from logintime where year(logintime) = '2018';
    

    环比结果1
    如上图这个“王俊名”同志 今年登录9次
    环比结果2

    如上图这个“王俊名”同志 去年登录8次

    -- 环比操作
    SELECT
    	t.username,
    	t.logincountnow,
    	t2.logincountlastyear,
    	( t.logincountnow / t2.logincountlastyear ) - 1 AS rat -- 这个列就是你要的环比增长值
    FROM
    	-- 主数据
    	( SELECT t.username, count( 0 ) logincountnow FROM logintime t WHERE year(logintime)= '2019' GROUP BY t.username ) t
    	LEFT JOIN 
    	-- 对比数据
    	( SELECT t.username, count( 0 ) logincountlastyear FROM logintime t WHERE year(logintime)= '2018' GROUP BY t.username ) t2 
    	ON t.username = t2.username;
    

    环比结果.
    环比概念示例图:
    环比示例图.
    同比、环比这两张图是不是很像有点相似?对比一下哪里不一样,哈哈

    展开全文
  • SQL同比环比(记录SQL

    千次阅读 2020-03-20 15:39:38
    最近在做BI所以sql任务比较多,好久没碰过sql了,记录一下。 表数据 --环比 select c.DepartName as 部门, convert(varchar(10), c.SalesDate, 23) as 对比年月, c.Sales as 本月销售总量, d.Sales as 上月销售...
  • with tab1 as( select a....上年*100,1)||'%' 同比 from tab1 left join tab2 on tab1.原年月=tab2.原年月 使用帆软设置参数时: where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")}
  • sql语句下的同比环比操作

    千次阅读 多人点赞 2020-07-01 00:44:26
    需求:查询2020年,每月的销售额,以及同比环比,并按照年月进行升序排序 建数据库 建表 插入数据 偷个懒,这些语句就先省略了 给看个截图 ps: 建表时时间要选择datetime ,后面要对时间进行操作的~ 思路:分步操作 ...
  • sql语句查询同比增量、同比 同比增量 SELECT a.customer, a.month, ( a.x - b.y ) 同比增量 FROM ( SELECT customer, year, month, SUM(number) x FROM syxy_sales WHERE year = 2020 GROUP BY month,customer ) a ...
  • 关于SQL同比环比

    千次阅读 2020-09-22 09:49:21
    同比环比的意思 同比 一般情况下是今年第n月与去年第n月比。同比发展速度主要是为了消除季节变动的影响,用以说明本期发展水平与去年同期发展水平对比而达到的相对发展速度。如,本期2月比去年2月,本期6月比...
  • SQL 同比环比计算公式及实例演示

    千次阅读 2021-04-01 23:48:21
    同比数据计算公式: 同比:一般情况下是今年第n月与去年第n月比 计算方式:同比增长率=(本期数-同期数)÷同期数×100% 所以要有个本期数据与同期数据一一对应的表,那就要本期数据与同期数据分离 环比数据计算...
  • sqlserver 计算同比,环比增长

    千次阅读 2019-09-27 02:30:03
    同比增长 order by fdSequenceID,id asc   环比增长: WITH f AS ( SELECT ROW_NUMBER() OVER ( partition by fdSequenceID ORDER BY fdTime) AS id, * FROM [ NewDBTest...
  • /// 生成计算同比环比查询语句 /// table:表名称;statColumns:要统计的值字段;yearColumn:年份字段名;monthColumn:月份字段名;joinColumns:除年月外的连接条件 /// --上期无值或0本期有值不为0:1 ...
  • /// ///生成计算同比环比查询语句///table:表名称;statColumns:要统计的值字段;yearColumn:年份字段名;monthColumn:月份字段名;joinColumns:除年月外的连接条件///--上期无值或0本期有值不为0:1///--上期有值...
  • AS PREV_SAL -- 环比分析,与上个月份进行比较 ,LAG(SALARY, 12, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_12_SAL -- 同比分析,与上个年度相同月份进行比较 ,SUM(SALARY) OVER(PARTITION BY ...
  • mysql:一条sql语句统计环比同比

    万次阅读 2019-01-07 11:10:33
    统计各个景区的入园人数、销售额以及入园人数和销售额的同比 以月度为例子同比为例;环比类似 思路分析:表a首先统计出当月的入园人数、销售额,表b统计出同期的入园人数、销售额(在a的基础上减去一年,可),...
  • SQL同比 环比

    万次阅读 2017-02-26 11:24:13
    or d.Sales=0 then '无穷大' else cast(cast((isnull(c.Sales, 0)-isnull(d.Sales,0))*100/isnull(d.Sales, 0) as decimal(10,2)) as varchar(50))+'%' end as 同比 from SalesDetail c left join (select a....
  • SQL 同比环比增长率计算

    千次阅读 2019-11-08 14:14:08
    同比: SELECT DISTINCT B.dateM,B.dateY,B.Total,B.Total+B.Total*AVG( B.per ) OVER ( PARTITION BY B.dateM ) as predictionTotal , AVG( B.per ) OVER ( PARTITION BY B.dateM ) AS [AvgPer] ,MA...
  • 800 2006-8-1 6 营销一部 400 2007-7-1 7 营销二部 800 2007-7-1 8 营销三部 700 2007-8-1 9 营销一部 600 2008-7-1 10 营销二部 300 2008-7-1 2、要根据要求得到以下数据 1)得到同比数据 部门 ...
  • SQL 查询同比,环比

    2020-12-21 07:45:09
    400 2007-7-1 7 营销二部 800 2007-7-1 8 营销三部 700 2007-8-1 9 营销一部 600 2008-7-1 10 营销二部 300 2008-7-1 2、要根据要求得到以下数据 1)得到同比数据 部门 对比年月本月销售总量 去年同期销售总量同比 ...
  • SQL 同比环比

    2022-01-04 14:08:24
    描述 数据来源使用frdemo的订单明细和订单表 效果图 ...三、在SQL中计算同环比,不在单元格内计算与过滤 select t.m,t.ym, t.销量, t1.销量 同期, (case when t1.销量 is null then...
  • 1 国有企业 110 110 0111 826000 03 20 2010-08 26.25 26.252 国有企业 110 110 0111 826000 11 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,733
精华内容 693
关键字:

同比环比sql