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

SQL:प्रत्येक डिवाइस सेट के लिए समान मान की लगातार घटना के साथ सभी रिकॉर्ड गिनें और उच्चतम गणना लौटाएं

यह अंतराल और द्वीपों का एक रूप है। द्वीपों को प्राप्त करने के लिए आप पंक्ति संख्याओं के अंतर का उपयोग कर सकते हैं:

select device_id, speed, count(*) as num_times
from (select t.*,
             row_number() over (partition by device_id order by datetime) as seqnum,
             row_number() over (partition by device_id, speed order by datetime) as seqnum_s
      from t
     ) t
group by device_id, speed, (seqnum - seqnum_s);

फिर, अधिकतम प्राप्त करने के लिए, विंडो फ़ंक्शंस की एक और परत का उपयोग करें:

select device_id, speed, num_times
from (select device_id, speed, count(*) as num_times,
             row_number() over (partition by device_id order by count(*) desc) as seqnum
      from (select t.*,
                   row_number() over (partition by device_id order by datetime) as seqnum,
                   row_number() over (partition by device_id, speed order by datetime) as seqnum_s
            from t
           ) t
      group by device_id, speed, (seqnum - seqnum_s)
     ) ds
where seqnum = 1;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL NOT NULL बाधा को अनदेखा करता है

  2. MYSQL में सभी तालिकाओं और क्षेत्रों को utf-8-bin संयोजन में बदलने के लिए एक स्क्रिप्ट

  3. अपडेट बटन पर क्लिक करने के बाद क्वेरी अपडेट क्यों नहीं हुई?

  4. PHP का उपयोग करके MySQL डेटा के साथ HTML फॉर्म भरना शून्य हो रहा है

  5. mysql तालिकाओं में एकाधिक csv फ़ाइलें आयात करना