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

गिनती के साथ एसक्यूएल लगातार रिकॉर्ड

ऐसा करने के लिए आप चर का उपयोग कर सकते हैं।

select phone_number from (
select c.*,
@prev_outcome:[email protected]_outcome,
@cur_outcome:=system_outcome,
@prev_pnum:[email protected]_pnum,
@cur_pnum:=phone_number,
case when @cur_pnum = @prev_pnum and @prev_outcome <> @cur_outcome then @rn:[email protected]+1
     when @cur_pnum = @prev_pnum and @prev_outcome = @cur_outcome then @rn:[email protected]
else @rn:=1 end as rank
from calls c, 
(select @rn:=0,@prev_pnum:='',@cur_pnum:='',@prev_outcome:='',@cur_outcome:='') r
order by phone_number,dt
    ) x
where system_outcome='No Answer'
group by phone_number,rank
having count(*) > 6

यह क्वेरी 4 चरों का उपयोग करती है

1) @cur_outcome जो शुरू में एक खाली स्ट्रिंग पर सेट है। इसके बाद चयन वर्तमान पंक्ति के system_outcome को निर्दिष्ट करता है।

2) @prev_outcome जो शुरू में एक खाली स्ट्रिंग पर सेट है। इसके बाद चयन इसे @cur_outcome पर सेट करता है (जो पहली बार एक खाली स्ट्रिंग है और इसी तरह)।

3) @cur_pnum जो शुरू में एक खाली स्ट्रिंग पर सेट है। इसके बाद चयन वर्तमान पंक्ति का फ़ोन_नंबर निर्दिष्ट करता है।

4) @prev_pnum जो शुरू में एक खाली स्ट्रिंग पर सेट है। इसके बाद चयन इसे @cur_pnum मान पर सेट करता है (जो प्रारंभ में एक खाली स्ट्रिंग है)।

order by फोन_नंबर और तारीख के आधार पर वर्तमान और पिछली पंक्तियों को निर्दिष्ट करने के लिए यहां क्लॉज महत्वपूर्ण है।

प्रारंभ में आंतरिक क्वेरी चलाएँ यह देखने के लिए कि चर कैसे सेट किए जाते हैं, जो आपके लिए चीजों को स्पष्ट करेगा।

Sample Demo

डेमो में कुछ नमूना डेटा होता है जो प्रश्न में दिखाए गए डेटा से अधिक होता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जेपीए का नक्शा<KEY, VALUE> JPQL की क्वेरी विफल रही

  2. MySQL में, एक ही डेटाबेस में एक टेबल की सामग्री को दूसरी टेबल पर कैसे कॉपी करें?

  3. पीडीओ तैयार वक्तव्यों की जाँच में त्रुटि

  4. अगर सिंटैक्स त्रुटि

  5. बैश से .sql स्क्रिप्ट कैसे निष्पादित करें