You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于日度营收成本数据计算各季度利润

季度利润统计需求实现方案

核心逻辑

  • 先将每条日度数据的Date字段转换为「年份+季度」的分组标识
  • 计算单日日利润:Revenue - Cost
  • 按分组标识求和,得到各季度总利润,无数据的季度自动不会出现在结果中,符合需求。

全数据库兼容实现方案

不依赖数据库内置季度函数,所有SQL环境均可通用:

SELECT
    -- 拼接季度标识,格式为「XXXX年QX」
    CONCAT(
        YEAR(`Date`),
        '年Q',
        CASE
            WHEN MONTH(`Date`) BETWEEN 1 AND 3 THEN 1
            WHEN MONTH(`Date`) BETWEEN 4 AND 6 THEN 2
            WHEN MONTH(`Date`) BETWEEN 7 AND 9 THEN 3
            WHEN MONTH(`Date`) BETWEEN 10 AND 12 THEN 4
        END
    ) AS 季度,
    SUM(Revenue - Cost) AS 总利润
FROM
    替换为你的实际表名
GROUP BY
    YEAR(`Date`),
    CASE
        WHEN MONTH(`Date`) BETWEEN 1 AND 3 THEN 1
        WHEN MONTH(`Date`) BETWEEN 4 AND 6 THEN 2
        WHEN MONTH(`Date`) BETWEEN 7 AND 9 THEN 3
        WHEN MONTH(`Date`) BETWEEN 10 AND 12 THEN 4
    END
ORDER BY
    YEAR(`Date`), 季度;

主流数据库简化写法

MySQL

SELECT
    CONCAT(YEAR(`Date`), '年Q', QUARTER(`Date`)) AS 季度,
    SUM(Revenue - Cost) AS 总利润
FROM 替换为你的实际表名
GROUP BY YEAR(`Date`), QUARTER(`Date`)
ORDER BY YEAR(`Date`), QUARTER(`Date`);

PostgreSQL

SELECT
    EXTRACT(YEAR FROM "Date") || '年Q' || EXTRACT(QUARTER FROM "Date") AS 季度,
    SUM(Revenue - Cost) AS 总利润
FROM 替换为你的实际表名
GROUP BY EXTRACT(YEAR FROM "Date"), EXTRACT(QUARTER FROM "Date")
ORDER BY EXTRACT(YEAR FROM "Date"), EXTRACT(QUARTER FROM "Date");

SQL Server

SELECT
    CAST(YEAR([Date]) AS VARCHAR) + '年Q' + CAST(DATEPART(QUARTER, [Date]) AS VARCHAR) AS 季度,
    SUM(Revenue - Cost) AS 总利润
FROM 替换为你的实际表名
GROUP BY YEAR([Date]), DATEPART(QUARTER, [Date])
ORDER BY YEAR([Date]), DATEPART(QUARTER, [Date]);

示例验证

使用题目给出的测试数据执行上述代码,输出结果如下,完全符合预期:

季度总利润
2021年Q1130
2021年Q4-20

内容的提问来源于stack exchange,提问作者DataScience99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 09:57:02