如何在三个月的时间内只保留一行数据并删除其他数据?

nzk0hqpo  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(287)

我有一个带有属性的表 date, name, sex, id, status 日期的格式为datetime。
我想分组 name, sex, id 在一个三个月的窗口中只保留一个数据,并删除其他行。
例如

2017-12-01, A, MALE, 123
2017-10-01, A, MALE, 123
2017-09-01, A, MALE, 123
2016-08-02, A, MALE, 123
2017-09-01, B, MALE, 123
2016-08-02, B, MALE, 123

我只想在按这三个属性分组后的三个月窗口中保留任何行

2017-09-01, A, MALE, 123 (any first three rows work)
2016-08-02, A, MALE, 123
2017-09-01, B, MALE, 123
2016-08-02, B, MALE, 123

我怎样才能在sql中做到这一点,这是可能的吗?

iyr7buue

iyr7buue1#

这个解决方案可以:

select min(date) over (partition by name,sex,id) as dmin,
max(date) over (partition by name,sex,id) as dmax
from table
where datediff(mm,dmin,dmax)<3
nhaq1z21

nhaq1z212#

也许这会有帮助:

select name,sex,id
from table
group by name,sex,id
having datediff(mm,date,getdate())<3

如果你想删除你应该改为datediff>3

相关问题