Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SQL में प्रत्येक X पंक्तियों के लिए औसत मान प्राप्त करें

आपके 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 सर्वर होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli क्वेरी केवल पहली पंक्ति लौटा रही है

  2. कैसे mysql में एक तारीख प्रारूप के महीने के लिए घटाना?

  3. MySQL में डबल बनाम दशमलव

  4. स्ट्रिंग को पंक्ति में विभाजित करें

  5. वैकल्पिक पैरामीटर के साथ php mysql फ़ंक्शन