我在对mysql的sql查询中遇到了一个问题,即获取每个组中的最后一条记录,并在一个查询中对一些字段求和。我有一个表:
name date interested made_call
andrew.h 2011-02-04 10 10
andrew.h 2011-02-11 20 10
andrew.h 2011-02-13 2 10
sasha.g 2011-02-11 5 20
sasha.g 2011-02-12 5 1我需要按名称对made_call列分组求和,并返回感兴趣的最后一条记录。下面是我想要得到的结果:
name date interested made_call
andrew.h 2011-02-13 2 30
sasha.g 2011-02-12 5 21我试着用这个查询得到结果
SELECT a.name,a.date,a.interested,sum(made_call) as made_call
FROM `resultboard` a
WHERE a.attendence = 1
AND NOT EXISTS (select 1 from resultboard where name = a.name
and id > a.id and attendence = 1)
GROUP BY name但结果是我得到了
andrew.h 2011-02-13 2 10
sasha.g 2011-02-12 5 1所以查询没有求和,只返回组帮助中的最后一条记录)
发布于 2011-02-15 18:28:12
如果表非常大,这可能会有点慢,但它会得到想要的结果:
SELECT a.name, t.date, a.interested, t.calls
FROM resultboard a
JOIN (SELECT name, MAX(date) AS date, SUM(made_call) AS calls FROM resultboard
GROUP BY name) AS t
ON a.name = t.name AND a.date = t.datehttps://stackoverflow.com/questions/5002335
复制相似问题