在Oracle数据库中使用SQL计算同比和环比

5 篇文章 0 订阅

一、什么是同比和环比

  • 同比:通常指当前时间段与上一年同一时间段的比较。比如,2023年3月的销售额与2022年3月的销售额进行比较,以此来评估业务的年度增长情况。

  • 环比:通常指当前时间段与上一个时间段的比较。比如,2023年3月的销售额与2023年2月的销售额进行比较,以此来评估业务的月度增长情况。

二、准备数据

在进行同比和环比计算之前,我们需要有一个合适的数据表。假设我们有一个销售数据表 sales_data,其中包含以下字段:

  • sales_date:销售日期
  • amount:销售金额

示例数据如下:

sales_dateamount
2022-03-011000
2022-03-021500
2023-02-012000
2023-03-012500

三、计算同比

计算同比的SQL查询可以使用 LAG 函数来获得去年同一时间的数据。以下是一个示例查询,计算2023年3月的销售额同比2022年3月的销售额:

SELECT 
    TO_CHAR(sales_date, 'YYYY-MM') AS sales_month,
    SUM(amount) AS current_month_sales,
    LAG(SUM(amount), 12) OVER (ORDER BY TO_CHAR(sales_date, 'YYYY-MM')) AS last_year_sales,
    (SUM(amount) - LAG(SUM(amount), 12) OVER (ORDER BY TO_CHAR(sales_date, 'YYYY-MM'))) / 
    LAG(SUM(amount), 12) OVER (ORDER BY TO_CHAR(sales_date, 'YYYY-MM')) * 100 AS yoy_growth_rate
FROM 
    sales_data
WHERE 
    sales_date >= TRUNC(ADD_MONTHS(SYSDATE, -12), 'MM') 
GROUP BY 
    TO_CHAR(sales_date, 'YYYY-MM')
ORDER BY 
    sales_month;

四、计算环比

计算环比的SQL查询使用 LAG 函数来获得上一个月份的数据。以下是一个示例查询,计算2023年3月的销售额环比2023年2月的销售额:

SELECT 
    TO_CHAR(sales_date, 'YYYY-MM') AS sales_month,
    SUM(amount) AS current_month_sales,
    LAG(SUM(amount), 1) OVER (ORDER BY TO_CHAR(sales_date, 'YYYY-MM')) AS last_month_sales,
    (SUM(amount) - LAG(SUM(amount), 1) OVER (ORDER BY TO_CHAR(sales_date, 'YYYY-MM'))) / 
    LAG(SUM(amount), 1) OVER (ORDER BY TO_CHAR(sales_date, 'YYYY-MM')) * 100 AS mom_growth_rate
FROM 
    sales_data
WHERE 
    sales_date >= TRUNC(ADD_MONTHS(SYSDATE, -1), 'MM') 
GROUP BY 
    TO_CHAR(sales_date, 'YYYY-MM')
ORDER BY 
    sales_month;
 

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值