我有一个包含非唯一潜在客户的表格,我需要对其进行分组,以包含唯一的,最近的(date
}列潜在客户。
id lead_id status date
----- ------ -- -------------------
26199 666842 Ok 2013-06-19 12:00:09
56199 376842 Ok 2013-06-19 12:00:09
58322 376842 Ok 2013-06-21 12:11:59
60357 376842 Ok 2013-06-24 12:22:00
61431 376842 Ok 2013-06-25 12:18:02
62365 376842 Ok 2013-06-26 12:16:04
63202 376842 Ok 2013-06-27 12:14:08
63983 376842 Er 2013-06-28 12:12:06
因此,在上面的示例中,我应该有两个潜在客户:
ID为26199
和63983
,因为他们都是MAX(date)
,而GROUP BY
为lead_id。
我试过左连接,最大和组聚合,不知道我做错了什么。
SELECT a.lead_id, MAX(a.created) AS created FROM RawLead a LEFT JOIN RawLead b ON b.created = a.created GROUP BY a.lead_id
不幸的是我无法使用子查询,因为我需要在视图中显示它们。
答案 0 :(得分:3)
没有子查询:)
select
l1.*
from
lead l1
left join lead l2 on l1.date < l2.date and l1.lead_id = l2.lead_id
where l2.id is null
看到它在sqlfiddle中正常工作。
LEFT JOIN的工作原理是,当l1.date处于其最大值时,没有l2.date具有更大的值,并且l2行值将为NULL。