एसक्यूएल क्वेरी के लिए आईडी प्रति गिनती पंक्तियों विभिन्न स्तंभों में 2 मिनट तिथियों के बीच सीमा का चयन करके

वोट
-1
       temp
|id|received  |changed   |
|33|2019-02-18|2019-11-18|
|33|2019-08-02|2019-09-18|
|33|2019-12-27|2019-12-18|
|18|2019-07-14|2019-10-18|
|50|2019-03-20|2019-05-26|
|50|2019-01-19|2019-06-26|

'Temp' तालिका से पता चलता उपयोगकर्ताओं को, जो एक गतिविधि के लिए एक अनुरोध प्राप्त हुआ। एक उपयोगकर्ता से अधिक अनुरोध कर सकते हैं। इसलिए प्राप्त स्तंभ जब अनुरोध प्राप्त किया गया था दिखा कई तिथियों है। 'बदला' तालिका से पता चलता है जब स्थिति बदल गया था। वहाँ भी इसके लिए एक से अधिक मान रहे हैं। आवश्यकता के बीच न्यूनतम (प्राप्त) दिनांक और मिन (परिवर्तित) तिथि अपेक्षित परिणाम इस तरह दिखना चाहिए प्रति उपयोगकर्ता अनुरोधों की COUNT को खोजने के लिए: - ID- 33 की तीसरी पंक्ति का चयन नहीं किया जाना चाहिए, क्योंकि प्राप्त दिनांक बदल के बाद है दिनांक।

|id|total_requests_sent|
|33|2                  |
|18|1                  |
|50|2                  |


की कोशिश की बनाना 2 CTE के दोनों मिन दिनांक मानों के लिए और मूल एक साथ शामिल हो गए

13/02/2020 को 22:03
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

मैं वास्तव में हो सकता है अपने कार्य को अधिक-सरल बनाने, लेकिन इस काम की तरह कुछ नहीं है?

select
  t.id, count (*) as total_requests_sent
from
  temp t
  join temp2 t2 on
    t.id = t2.id
where
  t.received between t2.min_received and t2.min_changed
group by
  t.id

मेरा मानना ​​है कि उत्पादन उपयोग के मामले आप सूचीबद्ध पर अपने उदाहरण से मेल खाएगा, लेकिन एक सीमित डाटासेट के साथ यह सुनिश्चित करने के लिए मुश्किल है।

14/02/2020 को 00:28
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more