数据库:MySQL
需求:查询并计算指定日期范围内的单日每个模式的近7天的总和
解释:数据查询日期例如为 2022-09-01 至 2022-09-14 ,查询后日期为2022-09-14的 模式 字段的值是2022-09-14到2022-09-08 模式字段值的总和
我想到了用 over(partition by)
函数,但是不知道应该怎样添加where条件 ,条件是:获取这条数据的sum(模式一),并且sum的日期是从这条数据近7天的总和
SELECT 检测日期, 工厂, 车间, 型号, 工序, 分类, 工位, 设备编号, 要素名称, 模式二数据值, 模式三数据值, 模式一数据值,
sum(模式一) over(partition by 工厂, 车间, 型号, 要素名称 order by 模式一 desc) summodel1, // where DATE_SUB(检测日期, INTERVAL 7 DAY) <= date(检测日期)
sum(模式二) over(partition by 工厂, 车间, 型号, 要素名称 order by 模式二 desc) summodel2,
sum(模式三) over(partition by 工厂, 车间, 型号, 要素名称 order by 模式三 desc) summodel3,
sum(状态) over(partition by DATE_SUB(检测日期, INTERVAL 7 DAY) <= date(检测日期),工厂, 车间, 型号, 要素名称 order by 状态 desc) 状态1
FROM tableA
where (检测日期 BETWEEN DATE_SUB('2022-09-07', INTERVAL 7 DAY) and '2022-09-14')
GROUP BY
检测日期,工厂, 车间, 型号, 要素名称