SSMS
 sql >> डेटाबेस >  >> Database Tools >> SSMS

TSQL क्वेरी पिछले 24 घंटों के लिए प्रत्येक घंटे के मान लौटाती है

आपकी समस्या यह प्रतीत होती है कि समय अवधि को घंटों में विभाजित करने की आवश्यकता है। इसलिए, आपको दिन के सभी घंटों से शुरुआत करनी होगी। फिर आप ओवरलैप की गणना करते हैं, अंतरों (मिलीसेकंड में नीचे) का योग करते हैं और आउटपुट के लिए सब कुछ वापस एक समय में परिवर्तित करते हैं।

with const as (
        select dateadd(hour, 1, cast(cast(getdate() -1 as date) as datetime)) as midnight            
    ),
    allhours as (
        select 0 as hour, midnight as timestart, dateadd(hour, 1, midnight) as timeend from const union all
        select 1 as hour, dateadd(hour, 1, midnight), dateadd(hour, 2, midnight) from const union all
        select 2 as hour, dateadd(hour, 2, midnight), dateadd(hour, 3, midnight)  from const union all
        . . .
        select 23 as hour, dateadd(hour, 23, midnight), dateadd(hour, 24, midnight) from const
    )
select ah.hour,
       sum(datediff(ms, (case when ah.timestart >= dt.begin then timestart else dt.begin end),
                        (case when ah.timeend <= dt.end then ah.timeend else dt.end end)
                   ) 
           ) as totalms,
       cast(dateadd(ms, sum(datediff(ms, (case when ah.timestart >= dt.begin then timestart else dt.begin end),
                                     (case when ah.timeend <= dt.end then ah.timeend else dt.end end)
                                    )
                           ),
                     0) as time
           ) as totalTime
from allhours ah left outer join
     DeviceTable dt
     on ah.timestart< coalesce(dt.end, getdate()) and
        ah.timeend >= dt.begin
group by ah.hour
order by ah.hour

साथ ही, इस कार्य को करने के लिए, आपको "प्रारंभ" और "अंत" को दोहरे उद्धरण चिह्नों या वर्ग कोष्ठकों में लपेटना होगा। ये टी-एसक्यूएल में आरक्षित शब्द हैं। और आपको "..." को प्रतिस्थापित करने की आवश्यकता है। 3 से 22 घंटों के लिए अतिरिक्त लाइनों के साथ।



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. एसक्यूएल सर्वर प्रबंधन स्टूडियो - सभी गैर खाली टेबल ढूँढना

  2. प्रबंधन स्टूडियो डिफ़ॉल्ट फ़ाइल स्थान सहेजें

  3. एसएसएमएस (एसक्यूएल सर्वर 2014 एक्सप्रेस) लॉन्च नहीं कर सकता - अमान्य लाइसेंस डेटा। पुनः स्थापित करना आवश्यक है

  4. प्रबंधन स्टूडियो मेरी टी-एसक्यूएल टिप्पणियों को सहेजना कैसे जानता है?

  5. प्रबंधन स्टूडियो और प्रोफाइलर में क्वेरी निष्पादन समय। यह क्या मापता है?