decimal 求和
时间: 2025-06-14 22:44:29 浏览: 6
### MySQL Decimal 类型求和与日期范围销售额对比
为了计算指定日期范围内的 `decimal` 类型数据的求和,并同时获取去年同期的销售额对比,可以按照以下方式实现。
#### 查询指定日期范围内的每日销售额
假设表名为 `sales_data`,字段 `sale_amount` 是存储销售额的 `decimal` 类型字段,`sale_date` 是记录销售日期的字段。以下是查询指定日期范围内每日销售额的 SQL 语句:
```sql
SELECT
DATE(sale_date) AS sale_date,
SUM(sale_amount) AS total_sales
FROM sales_data
WHERE sale_date BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY DATE(sale_date);
```
此查询中,`SUM(sale_amount)` 计算每天的总销售额,`BETWEEN` 指定日期范围,`GROUP BY DATE(sale_date)` 确保按天分组[^2]。
#### 查询去年同一天的每日销售额
接下来,查询去年同期每一天的销售额。通过将日期减去一年来匹配去年同期的数据:
```sql
SELECT
DATE(DATE_SUB(sale_date, INTERVAL 1 YEAR)) AS last_year_sale_date,
SUM(sale_amount) AS last_year_total_sales
FROM sales_data
WHERE DATE(sale_date) BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY DATE(DATE_SUB(sale_date, INTERVAL 1 YEAR));
```
在此查询中,`DATE_SUB(sale_date, INTERVAL 1 YEAR)` 将日期减去一年以匹配去年同期数据[^3]。
#### 合并今年与去年的销售额
如果需要同时展示今年和去年的每日销售额对比,可以使用 `UNION ALL` 将两个查询结果合并,并添加一个标识字段区分今年和去年的数据:
```sql
SELECT
'今年' AS period,
DATE(sale_date) AS sale_date,
SUM(sale_amount) AS total_sales
FROM sales_data
WHERE sale_date BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY DATE(sale_date)
UNION ALL
SELECT
'去年' AS period,
DATE(DATE_SUB(sale_date, INTERVAL 1 YEAR)) AS sale_date,
SUM(sale_amount) AS total_sales
FROM sales_data
WHERE DATE(sale_date) BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY DATE(DATE_SUB(sale_date, INTERVAL 1 YEAR));
```
此查询中,`UNION ALL` 将今年和去年的每日销售额结果合并为一个结果集[^3]。
#### 处理空值的情况
为了避免某些日期可能没有销售额而导致的空值问题,可以在查询中使用 `COALESCE` 函数将空值替换为 0:
```sql
SELECT
'今年' AS period,
DATE(sale_date) AS sale_date,
COALESCE(SUM(sale_amount), 0) AS total_sales
FROM sales_data
WHERE sale_date BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY DATE(sale_date)
UNION ALL
SELECT
'去年' AS period,
DATE(DATE_SUB(sale_date, INTERVAL 1 YEAR)) AS sale_date,
COALESCE(SUM(sale_amount), 0) AS total_sales
FROM sales_data
WHERE DATE(sale_date) BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY DATE(DATE_SUB(sale_date, INTERVAL 1 YEAR));
```
此查询中,`COALESCE(SUM(sale_amount), 0)` 确保即使某天没有销售额也不会影响结果[^2]。
###
阅读全文
相关推荐


















