Beroende på din DBMS kommer något liknande detta att fungera:
SELECT
ChunkStart = Min(Id),
ChunkEnd = Max(Id),
Value = Avg(Value)
FROM
(
SELECT
Chunk = NTILE(5) OVER (ORDER BY Id),
*
FROM
YourTable
) AS T
GROUP BY
Chunk
ORDER BY
ChunkStart;
Detta skapar 5 grupper eller bitar oavsett hur många rader det finns, som du begärde.
Om du inte har några fönsterfunktioner kan du fejka det:
SELECT
ChunkStart = Min(Id),
ChunkEnd = Max(Id),
Value = Avg(Value)
FROM
YourTable
GROUP BY
(Id - 1) / (((SELECT Count(*) FROM YourTable) + 4) / 5)
;
Jag gjorde några antaganden här som Id
börjar med 1 och det inte finns några luckor, och att du skulle vilja ha den sista gruppen för liten istället för för stor om saker och ting inte delas jämnt. Jag antog också heltalsdelning skulle resultera som i Ms SQL Server.