简言之:mysql-我需要带上一段时间不活跃的公司(对于fiddle示例是365天)。
我怎么检查这个?每个公司至少有一个联系人,他与一个事件相关,每个事件都有(许多)子事件,在这最后一个表中,我有最后一个活动日期,认为一个公司处于不活动状态的天数是由用户决定的,我做这个计算没有问题
sql.Append("where DATEDIFF(CURDATE(),DATE(lastdate)) > " +days.ToString()+ "
问题是,这个检查所有的子事件,所以这个不仅检查最后的日期,而且检查每个日期。。。这意味着,输出不好。
我在考虑子查询以获取联系人的子事件的最大日期,或者事件的子事件的最大日期。
然后我们和一个朋友接近了,但这个问题是无限的。
select * from subevent se
where DATEDIFF(CURDATE(),DATE(
(select se2.dates from subevent se2
where se2.dates in
(select max(se3.dates)
from subevent se3
where se.idev = se3.idev)
group by se2.dates)));
我被困住了,我很感激你的帮助。。。
尝试了groupby、subquery和max(显然max是必需的,但不知道如何应用于何处…)
https://www.db-fiddle.com/f/wgsqgn7z26thnwm6naansa/8
(在fiddle链接上,应该只带companyname2和companyname4)
1条答案
按热度按时间k3fezbri1#
您可以使用聚合来获取每个公司的最后一个子事件日期。然后使用
having
条款:这是一把小提琴。