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

FIRST_VALUE और LAST_VALUE के साथ GROUP BY का उपयोग करना

SELECT 
    MIN(MinuteBar) AS MinuteBar5,
    Opening,
    MAX(High) AS High,
    MIN(Low) AS Low,
    Closing,
    Interval
FROM 
(
    SELECT FIRST_VALUE([Open]) OVER (PARTITION BY DATEDIFF(MINUTE, '2015-01-01 00:00:00', MinuteBar) / 5 ORDER BY MinuteBar) AS Opening,
           FIRST_VALUE([Close]) OVER (PARTITION BY DATEDIFF(MINUTE, '2015-01-01 00:00:00', MinuteBar) / 5 ORDER BY MinuteBar DESC) AS Closing,
           DATEDIFF(MINUTE, '2015-01-01 00:00:00', MinuteBar) / 5 AS Interval,
           *
    FROM #MinuteData
) AS T
GROUP BY Interval, Opening, Closing

आपके वर्तमान के करीब एक समाधान। आपने दो जगहों पर गलत किया है।

  1. FIRST_VALUE और LAST_VALUE विश्लेषणात्मक कार्य हैं , जो एक समूह के बजाय एक विंडो या पार्टीशन पर काम करते हैं। आप नेस्टेड क्वेरी को अकेले चला सकते हैं और उसका परिणाम देख सकते हैं।
  2. LAST_VALUE वर्तमान विंडो का अंतिम मान है, जो आपकी क्वेरी में निर्दिष्ट नहीं है, और डिफ़ॉल्ट विंडो वर्तमान विभाजन की पहली पंक्ति से वर्तमान पंक्ति तक की पंक्तियाँ हैं . आप या तो FIRST_VALUE का उपयोग डिसीडिंग ऑर्डर के साथ कर सकते हैं या एक विंडो निर्दिष्ट कर सकते हैं

    LAST_VALUE([Close]) OVER (PARTITION BY DATEDIFF(MINUTE, '2015-01-01 00:00:00', MinuteBar) / 5 
                ORDER BY MinuteBar 
                ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS Closing,
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. महत्वपूर्ण SQL डेटाबेस को पुनर्प्राप्त करने के लिए 2020 के लिए सर्वश्रेष्ठ SQL पुनर्प्राप्ति उपकरण

  2. SQL सर्वर प्रोफाइलर का उपयोग करना | SQL सर्वर प्रदर्शन समस्या निवारण -5

  3. इकाई ढांचे का उपयोग करके केवल डेटाटाइम मान से दिनांक भाग प्राप्त करें

  4. SQL सर्वर का उपयोग करके रिक्त स्थान को शून्य मानों में कैसे परिवर्तित करें?

  5. SQL सर्वर बनाम EXISTS प्रदर्शन