选择MYSQL中最新输入的记录
我有一个要求,我需要为所有经销商选择一系列月份的平均记录。但这里的条件是,如果某个经销商没有特定月份的记录,则应选择其最新记录并将其添加到当前月份 要求是: 选择3月至7月期间所有经销商的平均值 我只写了一个月所有经销商的情况,不考虑最新的记录。请让我知道我能在这里做什么 我的SQL:选择MYSQL中最新输入的记录,mysql,sql,Mysql,Sql,我有一个要求,我需要为所有经销商选择一系列月份的平均记录。但这里的条件是,如果某个经销商没有特定月份的记录,则应选择其最新记录并将其添加到当前月份 要求是: 选择3月至7月期间所有经销商的平均值 我只写了一个月所有经销商的情况,不考虑最新的记录。请让我知道我能在这里做什么 我的SQL: select avg(dealer_score), month(end_time) as month from dealers where end_time>='2015-03-01' and end_ti
select avg(dealer_score), month(end_time) as month from dealers where end_time>='2015-03-01' and end_time <= '2015-07-01 23:59:59' group by month(end_time)
期望输出
dealer_score | month
30% | March
30% | April
30% | May
30% | June
90% | July
经销商表中的记录
dealer_id| dealer_name| dealer_score| end_time
1| abc| 30| '2015-03-01 20:00:00 00:00:00'
2| xyz| 30| '2015-03-01 21:00:00 00:00:00'
3| ABC| 90| '2015-07-01 23:00:00 00:00:00'
4| XYZ| 90| '2015-07-01 23:15:00 00:00:00'
如果您只想将记录延长五个月,可以执行以下操作:
select mon.mon,
(if(@a2 := @a,
if(@a := coalesce(avgds, @a), @a2, @a2), avgds)
) as avgds
from (select 3 as mon union all select 4 union all select 5 union all
select 6 union all select 7
) mon left join
(select month(end_time) as mon, avg(dealer_score) as avgds
from dealer
group by month(end_time)
) d
on d.mon = m.mon cross join
(select @a := 0) params
order by mon;
如果您只想将记录延长五个月,可以执行以下操作:
select mon.mon,
(if(@a2 := @a,
if(@a := coalesce(avgds, @a), @a2, @a2), avgds)
) as avgds
from (select 3 as mon union all select 4 union all select 5 union all
select 6 union all select 7
) mon left join
(select month(end_time) as mon, avg(dealer_score) as avgds
from dealer
group by month(end_time)
) d
on d.mon = m.mon cross join
(select @a := 0) params
order by mon;
请编辑您的问题并提供示例数据和所需结果。现在还不清楚您所说的借用记录是什么意思,以及如果查询范围是一个月,为什么一个月很重要。请编辑您的问题并提供示例数据和所需结果。现在还不清楚你所说的借阅记录是什么意思,如果查询的是一个范围,为什么一个月很重要。谢谢。你能告诉我这是什么吗?我还得到了这个错误“字段列表中的未知列'm.mon'”
@a
是一个会话变量。m.mon
应该是mon.mon
。谢谢。你能告诉我这是什么吗?我还得到了这个错误“字段列表中的未知列'm.mon'”@a
是一个会话变量。m.mon
应该是mon.mon
。