Trying to sum the top 5 entries in each group.
SELECT
theId,
SUM(theData) FROM (
(SELECT
@count := 0,
@oldId := 0 AS theId,
0 AS theData)
UNION
(SELECT
@count := if(@oldId = id, @count+1, 0),
@oldId := id,
if(@count < 5, a, 0)
FROM
(SELECT * FROM theTable ORDER BY id, a DESC) AS theTable
)
) AS theView
WHERE theId != 0
GROUP BY theId;
Table population:
INSERT INTO `thetable` VALUES
(1,1), (1,2), (1,3), (1,4),
(1,5), (1,6), (1,7), (2,1),
(2,2), (2,3), (2,4), (2,5);

Leave a Reply