使用mysql编写新增数量和之前数量总和的数据, 按年和月输出多条数据
时间: 2024-09-12 14:10:19 浏览: 41
在MySQL中,你可以使用SQL查询结合GROUP BY和SUM函数来实现按年月统计新增数量和之前数量总和的数据。假设你有一个名为`sales`的表,其中包含`sale_date`(销售日期)、`quantity_sold`(销售数量)等字段,你可以尝试这样的查询:
```sql
SELECT
YEAR(sale_date) AS sale_year,
MONTH(sale_date) AS sale_month,
SUM(quantity_sold) AS total_quantity,
(SUM(quantity_sold) - COALESCE(LAG(SUM(quantity_sold)) OVER (ORDER BY sale_date), 0)) AS new_quantity
FROM
sales
GROUP BY
sale_year,
sale_month
ORDER BY
sale_year,
sale_month;
```
这个查询做了以下几件事:
1. `YEAR()` 和 `MONTH()` 函数提取了每个记录的年份和月份。
2. `SUM(quantity_sold)` 计算了每个月的总销售数量。
3. `LAG(SUM(quantity_sold)) OVER (ORDER BY sale_date)` 是窗口函数,它获取了当前行之前一行的总销售量,`COALESCE()` 用于处理可能存在NULL的情况,确保有值时才做减法。
4. `(SUM(quantity_sold) - ...)` 计算了当期的新增销量。
5. `GROUP BY` 将结果按照年月分组。
6. `ORDER BY` 确保结果按年月顺序排列。
阅读全文