对特定索引中的最后一条记录求和

时间:2016-07-10 11:49:04

标签: mysql sum

我无法编写一个运行正常的查询。如果有人可以帮助我,我很感激。

有一个表包含特定索引的多个记录。我需要总结每条记录的最后一条。

表示例:

+--------+--------+--------+
| id_cop |id_comp | value  |
+--------+--------+--------+
| 1      |   1    |   1000 |
| 1      |   1    |   2000 |
| 1      |   1    |   2200 |
| 2      |   2    |   1100 |
| 3      |   2    |   3000 |
| 3      |   2    |   3400 |
| 4      |   3    |   4000 |
| 5      |   4    |   1100 |
+--------+--------+--------+

我只需要将每个id_cop索引的最后一条记录加起来WHERE id_comp< = 4。

在这种情况下,结果应为2200 + 1100 + 3400 + 4000 + 1100。

任何线索?

感谢。

1 个答案:

答案 0 :(得分:0)

请试一试:

SELECT 
SUM(t.`value`) AS summedValue
FROM 
(
    SELECT 
    id_cop,
    `value`,
    id_comp,
    IF(@cop_id = id_cop, @rank := @rank + 1, @rank := 0) rankNumber,
    @cop_id := id_cop
    FROM coptable , (SELECT @cop_id := -1, @rank := 0) var
    WHERE id_comp <= 4
    ORDER BY id_cop , created_at DESC
) AS t
WHERE t.rankNumber = 0
GROUP BY t.rankNumber;

SQL FIDDLE DEMO

注意:我在这里使用了表名coptable。替换您的coptable