sxbjxxr 2024-05-20 08:29 采纳率: 0%
浏览 2

按照部门和月统计同比金额统计报表,已经统计出基础数据,如何按照报表要求统计出这些字段

按照部门和月统计同比金额统计报表,已经统计出基础数据,如何按照报表要求统计出这些字段,谢谢!

img

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-20 08:29
    关注

    引自免费微信小程序:皆我百晓生

    为了帮您解决这个问题,首先我们需要编写一个 SQL 查询,从给定的数据中提取所需的信息。根据提供的信息,我们有一个名为 czbjc 的表,其中包含日期、年份、月份、部门名称(FDATAVALUE)、数量(qty)和金额(JE)。要得到类似图1中的报告,我们需要计算每个月的总金额,并与上一年同期进行比较,得出同比增长率。

    以下是创建这个报表的 SQL 查询:

    WITH monthly_data AS (
        SELECT
            DATE_FORMAT(fdate, '%Y-%m') AS month,
            FDATAVALUE AS department,
            SUM(qty) AS quantity,
            SUM(JE) AS amount
        FROM czbjc
        GROUP BY month, FDATAVALUE
    ),
    last_year_data AS (
        SELECT
            DATE_FORMAT(DATE_ADD(fdate, INTERVAL -1 YEAR), '%Y-%m') AS month,
            FDATAVALUE AS department,
            SUM(qty) AS last_year_quantity,
            SUM(JE) AS last_year_amount
        FROM czbjc
        GROUP BY month, FDATAVALUE
    )
    SELECT
        m.month,
        m.department,
        m.quantity,
        m.amount,
        COALESCE(
            (m.amount - ly.last_year_amount) / ly.last_year_amount * 100,
            0
        ) AS growth_rate
    FROM
        monthly_data m
    LEFT JOIN
        last_year_data ly
    ON
        m.month = ly.month AND m.department = ly.department
    ORDER BY
        m.department,
        m.month;
    

    此查询分为两个子查询:

    1. monthly_data 子查询计算当前年的每个月每个部门的总量。
    2. last_year_data 子查询计算前一年的每个月每个部门的总量。
    3. 主查询将这两个子查询联接在一起,计算同比增长率并按部门和月份排序。

    注意,这里使用了 COALESCE 函数处理可能的除以零错误,当去年的数据为零时,同比增长率设置为0。

    由于您没有提供数据库的具体类型(如MySQL、PostgreSQL等),上述代码可能会有一些小的语法差异。确保您的数据库支持所使用的函数和语法。如果您遇到任何问题,可以随时提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月20日

悬赏问题

  • ¥15 如何将这个项目的ssh-TCP,改成ssh3-TCP协议
  • ¥20 ic卡dump文件校检码解密
  • ¥15 关于:接收到的数据不是有效的JSON格式
  • ¥15 apdl语言如何增加受力分析
  • ¥15 算法对比:学校优化算法与蚁群算法对比
  • ¥15 机电一体化系统设计说明书
  • ¥20 sgy数据提取地震波速,有人能回答吗小馋
  • ¥20 c#实现打开word的功能,并且需要安装成windows服务,word打不开怎么办
  • ¥15 python用ARIMA时间预测模型预测数据出错,急!
  • ¥30 为什么后端传给前端vue的河流json数据不在地图中显示出来