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

औसत mysql के साथ ऊपरी प्रवृत्ति कैसे प्राप्त करें

आप यहां जो चाहते हैं वह वर्तमान रिकॉर्ड से शुरू होने वाले पिछले एम रिकॉर्ड्स का औसत चल रहा है और यदि वर्तमान रिकॉर्ड का कॉलम मान चल रहे औसत से अधिक है तो हमें वर्तमान रिकॉर्ड का चयन करना होगा।

इसके लिए मेरा प्रयास यह है:

SET @M := 2;

SELECT * FROM
(
  SELECT (@rownumber:= @rownumber + 1) AS rn, yt.*
  FROM your_table yt,(SELECT @rownumber:= 0) nums
  ORDER BY name, id
) a
WHERE a.var1 > 
(
    SELECT avg(b.var1)
    FROM
    (
      SELECT (@rownumber:= @rownumber + 1) AS rn, yt.*
      FROM your_table yt,(SELECT @rownumber:= 0) nums
      ORDER BY name, id
    ) b
    WHERE b.rn > a.rn - @M AND b.rn <= a.rn 
)

@M पिछले रिकॉर्ड की गिनती है जिसे रनिंग एवरेज खोजने के लिए माना जाता है।

यहां SQL Fiddle पर कोड दिया गया है।

[संपादित करें]:

यहाँ एक और समाधान है जो मेरे अनुसार सहसंबद्ध क्वेरी की तुलना में अधिक कुशल होना चाहिए।

SET @M := 2;

 SELECT a.* FROM
 ( 
  SELECT (@rownumber:= @rownumber + 1) AS rn, yt.*
      FROM your_table yt,(SELECT @rownumber:= 0) nums
      ORDER BY name, id
 ) a
 JOIN 
 (
    SELECT b.name, b.rn, AVG(c.var1) AS av
    FROM
    (
      SELECT (@rownumber1:= @rownumber1 + 1) AS rn, yt.*
      FROM your_table yt,(SELECT @rownumber1:= 0) nums
      ORDER BY name, id
    ) b
    JOIN
    (
      SELECT (@rownumber2:= @rownumber2 + 1) AS rn, yt.*
      FROM your_table yt,(SELECT @rownumber2:= 0) nums
      ORDER BY name, id
    ) c
    ON b.name = c.name
    AND c.rn > (b.rn - @M) AND c.rn <= b.rn
    GROUP BY b.name,b.rn
 ) runningavg 
 ON a.name = runningavg.name
 AND a.rn = runningavg.rn
 AND a.var1 > runningavg.av

यहाँ मैंने सरल inner join . का उपयोग किया है रनिंग एवरेज की गणना करने के लिए और फिर से इनर जॉइन के साथ उन पंक्तियों का चयन किया है जिनका कॉलम वैल्यू औसत से अधिक है।

यह SQL Fiddle पर कोड है।

मुझे बताएं कि क्या यह कारगर साबित हुआ।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हाइबरनेट, C3P0, मैसकल - टूटा हुआ पाइप

  2. MySQL:परिवर्तनीय लंबाई की अनुक्रमणिका जेसन सरणी?

  3. [हैकररैंक पर ओलिवेंडर की इन्वेंटरी समस्या] द्वारा समूह में आंशिक (गैर-समेकित कॉलम) का विकल्प

  4. दूरस्थ डेटाबेस में डालें ASIFormDataRequest:400 कोड प्राप्त करना, खराब अनुरोध

  5. mysql किस मान की अधिकतम गिनती है