如何修改此MySQL查询以仅计算来自表格引导的leadID,其中“日期”列包含最新(最年轻)的日期?
SELECT COUNT(leadID) as accepted FROM leads WHERE change like '%OK%'
问题是leadID在表格引导中可以有多个实例。由于一个重复,原始查询结果为“4”。正确的结果是“3”。
日期以这种格式存储:2011-10-26 18:23:52。确定最年轻的日期时,结果应考虑数小时和分钟。
表格引导:
leadID | date | change 1 | 2011-10-26 18:23:52 | BAD 1 | 2011-10-26 17:00:00 | OK 2 | 2011-10-26 19:23:52 | OK 3 | 2011-10-26 20:23:52 | OK 4 | 2011-10-26 21:23:52 | OK 5 | 2011-10-26 22:23:52 | BAD
答案 0 :(得分:0)
您必须根据最新日期决定您的意思:最新的?昨天?今天?
如果是昨天,则将其添加到您的查询子句
select * from mytable where date >= date_sub(now(), interval 1 day)
答案 1 :(得分:0)
如果您使用的是oracle数据库,则可以使用max()函数从表中提取最新日期,进一步查看表中最新日期: -
SELECT COUNT(leadID) as accepted FROM leads WHERE change like '%OK%'
and date_col = (select max(date_col) from leads)
我假设最新的日期你的平均值是关于表格数据的最新...
更改: - 根据问题的变化和赞扬中提到的.. 我想你想在具有“更改”列值的记录中采用最新日期,例如'%OK%'并且想要计算明显的leadId
请尝试以下查询 -
SELECT COUNT(distinct leadID) as accepted FROM leads WHERE change like '%OK%'
and date_col = (select max(date_col) from leads WHERE change like '%OK%')
答案 2 :(得分:0)
我认为这就是你要找的东西:
select count(distinct l1.leadId) as accepted from leads l1
left join leads l2
on l1.leadId = l2.leadId and l1.date < l2.date
where l2.date is null and l1.`change` like '%OK%'
答案 3 :(得分:-1)
您可以尝试(如果您的日期是类似于time by time()函数的int)
$sql = "SELECT COUNT(leadID) as accepted FROM leads WHERE change like '%OK%' ORDER BY Date DESC LIMIT 1"
您只会提取最新的条目。
编辑:这应该适用于您的日期格式YYYY-MM-DD hh:mm:ss
编辑2:好的,我没有理解你的问题。 你有一个表领先:leadid日期 您想要计算新设日期的行数。
像另一个指出的那样你可以使用MAX运算符:
SELECT COUNT(distinct leadid)
FROM LEAD AS l,
( SELECT MAX(Date) mdate FROM Lead ) AS MaxDate
WHERE l.date = MaxDate.mdate
AND l.change like '%OK%'