आपके DBMS के आधार पर, कुछ इस तरह काम करेगा:
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;
आपके अनुरोध के अनुसार, यह 5 समूह या खंड बनाता है चाहे कितनी भी पंक्तियाँ हों।
यदि आपके पास कोई विंडोिंग फ़ंक्शन नहीं है तो आप इसे नकली बना सकते हैं:
SELECT
ChunkStart = Min(Id),
ChunkEnd = Max(Id),
Value = Avg(Value)
FROM
YourTable
GROUP BY
(Id - 1) / (((SELECT Count(*) FROM YourTable) + 4) / 5)
;
मैंने यहाँ कुछ धारणाएँ बनाई हैं जैसे कि Id
1 से शुरू होता है और कोई अंतराल नहीं होता है, और यदि चीजें समान रूप से विभाजित नहीं होती हैं, तो आप चाहते हैं कि अंतिम समूह बहुत बड़ा होने के बजाय बहुत छोटा हो। मैंने यह भी मान लिया था कि पूर्णांक विभाजन का परिणाम Ms SQL सर्वर होगा।