首页 > 解决方案 > 如何在三个月的窗口中只保留一行数据并删除其他数据?

问题描述

我有一个带有属性date, name, sex, id, status 日期的表,格式为日期时间。

我想分组,并且只在三个月的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 中做到这一点,这可能吗?

标签: mysqlsql

解决方案


也许这会有所帮助:

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

如果要删除,则应更改为 datediff>3


推荐阅读