[英]MySQL - how to select id where min/max dates difference is more than 3 years
I have a table like this: 我有这样一张桌子:
| id | date | user_id |
----------------------------------------------------
| 1 | 2008-01-01 | 10 |
| 2 | 2009-03-20 | 15 |
| 3 | 2008-06-11 | 10 |
| 4 | 2009-01-21 | 15 |
| 5 | 2010-01-01 | 10 |
| 6 | 2011-06-01 | 10 |
| 7 | 2012-01-01 | 10 |
| 8 | 2008-05-01 | 15 |
I'm looking for a solution how to select user_id where the difference between MIN and MAX dates is more than 3 yrs. 我正在寻找一个解决方案如何选择user_id,其中MIN和MAX日期之间的差异超过3年。 For the above data I should get: 对于上述数据,我应该得到:
| user_id |
-----------------------
| 10 |
Anyone can help? 有人可以帮忙吗?
SELECT user_id
FROM mytable
GROUP BY user_id
HAVING MAX(`date`) > (MIN(`date`) + INTERVAL '3' YEAR);
Tested here: http://sqlize.com/MC0618Yg58 在这里测试: http : //sqlize.com/MC0618Yg58
Similar to bernie's approach, I'd keep date formats native. 与bernie的方法类似,我会将日期格式保留为原生。 I'd also probably list the MAX first as to avoid an ABS
call (secure a positive number is always returned). 我也可能首先列出MAX以避免ABS
调用(确保始终返回肯定的正数)。
SELECT user_id
FROM my_table
WHERE DATEDIFF(MAX(date),MIN(date)) > 365
DATEDIFF
just returns delta (in days) between two given date fields. DATEDIFF
只返回两个给定日期字段之间的增量(以天为单位)。
SELECT user_id
FROM (SELECT user_id, MIN(date) m0, MAX(date) m1
FROM table
GROUP by user_id)
HAVING EXTRACT(YEAR FROM m1) - EXTRACT(YEAR FROM m0) > 3
SELECT A.USER_ID FROM TABLE AS A
JOIN TABLE AS B
ON A.USER_ID = B.USER_ID
WHERE DATEDIFF(A.DATE,B.DATE) > 365
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.