可以使用如下的 SQL 语句查询一年内每个月的销售额:

SELECT MONTH(created_at) as month, SUM(total) as sales
FROM orders
WHERE created_at BETWEEN DATE_SUB(NOW(), INTERVAL 1 YEAR) AND NOW()
GROUP BY MONTH(created_at);

这条语句会查询 orders 表中一年内每个月的销售额,并按照月份进行分组,得到每个月的销售额总和。返回的结果是一个列表,包含每个月的月份和对应的销售额,月份使用 Integer 类型,销售额使用 BigDecimal 类型。

解释:

  • MONTH(created_at):提取 created_at 字段的月份,并作为 month 列返回。
  • SUM(total):计算每个月份的销售额总和,并作为 sales 列返回。
  • WHERE created_at BETWEEN DATE_SUB(NOW(), INTERVAL 1 YEAR) AND NOW():筛选过去一年的订单数据。
  • GROUP BY MONTH(created_at):按照月份进行分组,以便计算每个月的销售额总和。

示例数据:

假设 orders 表中存在以下数据:

| id | user_id | created_at | total | |---|---|---|---| | 1 | 1 | 2022-12-01 | 100.00 | | 2 | 2 | 2022-12-15 | 200.00 | | 3 | 3 | 2023-01-10 | 300.00 | | 4 | 4 | 2023-01-20 | 400.00 | | 5 | 5 | 2023-02-05 | 500.00 |

执行上述 SQL 语句后,将返回以下结果:

| month | sales | |---|---| | 12 | 300.00 | | 1 | 700.00 | | 2 | 500.00 |

返回结果:

最终将返回一个 List<Integer, BigDecimal> 列表,例如:

List<Pair<Integer, BigDecimal>> salesData = new ArrayList<>();
// ... 将查询结果添加到 salesData 列表中 ... 

其中,每个 Pair 对象包含两个元素:

  • 第一个元素是 Integer 类型的月份。
  • 第二个元素是 BigDecimal 类型的销售额。

注意:

  • 为了确保数据类型的正确性,建议在使用 SQL 语句查询结果时,将月份转换为 Integer 类型,将销售额转换为 BigDecimal 类型。
  • 在实际应用中,可以使用数据库连接池和 JDBC API 来执行 SQL 查询并获取结果。
  • 为了提高查询效率,可以对 created_at 字段建立索引。
SQL 查询一年内每个月的销售额并返回 List<Integer, BigDecimal>

原文地址: https://www.cveoy.top/t/topic/nR8t 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录