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

MySQL सीमा, समूह और औसत क्वेरी

मेरी प्रारंभिक प्रतिक्रिया औसत को 5 परिणामों तक सीमित रखने के लिए LIMIT का उपयोग करने की थी, जिसके कारण मैंने सुझाव दिया:

select a.host, avg(a.execution_time) from (select id, execution_time, host from jobs order by id desc limit 5) a group by a.host;

लेकिन यह स्पष्ट है कि यह औसत को सबसे हाल की 5 नौकरियों तक सीमित करता है, न कि प्रति होस्ट नवीनतम 5 नौकरियों तक।

किसी प्रकार की संग्रहीत प्रक्रिया का उपयोग किए बिना, औसत को प्रतिबंधित करने के लिए LIMIT का उपयोग करना मुश्किल लगता है। इसने मुझे एक mysql चर का उपयोग करके प्रत्येक कार्य को प्रति-होस्ट पूर्णता आदेश, या स्थिति निर्दिष्ट करने पर विचार करने के लिए प्रेरित किया।

यह परीक्षण नहीं किया गया है, लेकिन यह जो सिद्धांत दिखाता है वह एक अच्छा प्रारंभिक बिंदु होना चाहिए:

सबसे पहले, हमें प्रत्येक कार्य को उसके मेजबान के आधार पर एक पद प्रदान करना चाहिए:

select
  host, 
  execution_time,
  @current_pos := if (@current_host = host, @current_pos, 0) + 1 as position,
  @current_host := host
from
  (select @current_host := null, @current_pos := 0) set_pos,
  jobs
order by
  host,
  id desc;

स्थिति स्थापित करने के बाद, परिणामों को शीर्ष 5 पदों तक सीमित करते हुए, केवल समग्र फ़ंक्शन का चयन करें:

select
  jt.host,
  avg(jt.execution_time)
from
  (
  select
    host, 
    execution_time,
    @current_pos := if (@current_host = host, @current_pos, 0) + 1 as position,
    @current_host := host
  from
    (select @current_host := null, @current_pos := 0) set_pos,
    jobs
  order by
    host,
    id desc
  ) jt
where
  jt.position <= 5
group
  by host;

कृपया मुझे बताएं कि क्या यह आपके लिए काम करता है, या यदि और भी पहलू हैं जिन पर मैंने विचार नहीं किया है। यह एक पेचीदा समस्या है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं सी++ माईएसक्यूएल कनेक्टर लाइब्रेरी को सेमेक से कैसे लिंक करूं?

  2. MySQL संग्रहीत कार्यविधि से शेल कमांड निष्पादित करें

  3. MySQL केवल अशक्त मान नहीं चुनें

  4. यदि मौजूद नहीं है तो काम नहीं कर रहा है

  5. Mysql डेटाबेस के लिए उपयोगकर्ता नाम और पासवर्ड कैसे पता करें