MySQL 中的同比变化或上一年的值
Posted
技术标签:
【中文标题】MySQL 中的同比变化或上一年的值【英文标题】:Year-Over-Year Change or Previous Year Values in MySQL 【发布时间】:2021-06-14 13:50:20 【问题描述】:我有一张看起来像这样的表
Date | Number of products | Department | Sub-Department |
---|---|---|---|
01-01-2019 | 10 | A | Ax |
01-01-2019 | 4 | A | Ay |
02-01-2019 | 14 | B | By |
02-01-2019 | 15 | A | Ay |
该表包含 2018 年至今的数据。对于每个日期,每个部门和子部门都有多行。
我想创建一个列来告诉我一年前的产品数量,按日期、部门、子部门和我拥有的其他列分组。
【问题讨论】:
您对示例数据的预期结果集是什么?到目前为止,您尝试过什么? @DavidDenenberg 预期的结果将是完全相同的表,其中有一个额外的列,其中包含上一年产品数量的值。直到现在我一直在寻找解决方案,但是他们中的大多数都有一个月或一年级别的数据,所以他们使用滞后窗口函数来获取值。 你的日期格式是什么?我什至无法判断数据的含义。 【参考方案1】:假设第一列是日期,可以使用窗口函数:
select date, department, sub_department, num_products,
max(num_products) over (partition by department, sub_department
order by date
range between interval 1 year preceding and interval 1 year preceding
) as num_products_1_year_ago
from t;
【讨论】:
以上是关于MySQL 中的同比变化或上一年的值的主要内容,如果未能解决你的问题,请参考以下文章
Angular 2如何防止订阅触发,除非map返回的两个值中的任何一个发生了变化