我正在使用 MySQL 在另一列中为每个类别创建一个窗口函数。我正在考虑将数据透视表与窗口函数结合起来,但是,不知道如何用 MySQL 做数据透视表。
以下是我要做的事情,为每个类别创建一个列并计算给定时间范围内的平均值:
我有:
名 | 姓 | 类别 | 数量 | 时间戳 |
---|---|---|---|---|
汤姆 | 站 | 头发 | 1 | 2020-06-21 |
克里斯 | 丹尼 | 学校 | 2 | 2020-06-22 |
哎呀 | 艾丽 | 图书 | 1 | 2020-06-21 |
汤姆 | 站 | 图书 | 10 | 2020-06-23 |
克里斯 | 丹尼 | 头发 | 2 | 2020-06-25 |
哎呀 | 艾丽 | 学校 | 15 | 2020-06-28 |
我想:
名 | 姓 | hair_last_3_days | school_last_3_days | boks_last_3_days |
---|---|---|---|---|
汤姆 | 站 | 1 | 1 | 21 |
克里斯 | 丹尼 | 2 | 2 | 202 |
哎呀 | 艾丽 | 2 | 1 | 1 |
汤姆 | 站 | 4 | 10 | 6 |
克里斯 | 丹尼 | 3 | 2 | 0 |
哎呀 | 艾丽 | 2 | 15 | 28 |
目前我能够创建平均值
select first, last, date(trans_date_trans_time), amt, category,
avg(amt) over(partition by first, last, category order by date(trans_date_trans_time) ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) avg_last_3 from table;
但是,我意识到这只有在一天接一天的情况下才有效,如果一个人在同一天有两行,这将不起作用。我正在寻求帮助。谢谢