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

रैंकिंग फ़ंक्शंस के बीच संबंध को समझना, ओवर (), ग्रुप बाय?

OVER() क्लॉज की आवश्यकता है ताकि SQL सर्वर ठीक से जान सके कि आप RANK() . जैसी चीजों को कैसे निर्धारित करना चाहते हैं . क्या RANK() क्या आप उम्मीद करते हैं कि आप ऑर्डरिंग मानदंड के साथ SQL सर्वर की आपूर्ति नहीं करते हैं? क्या किसी दौड़ का विजेता सबसे तेज़ समय, सबसे धीमा समय या वर्णानुक्रम में पहला नाम रखने वाला होता है?

आपको ORDER BY . को हटाने की आवश्यकता नहीं है क्लॉज जब आप एक ORDER BY . जोड़ते हैं OVER() . के अंदर क्लॉज . इनका स्वतंत्र रूप से उपयोग किया जाता है - एक RANK() . निर्धारित करने के लिए और दूसरा आदेश देने के लिए।

इसलिए, उदाहरण के लिए, यदि आप किसी रेस के फिनिशरों को वापस करना चाहते हैं, लेकिन उन्हें अंतिम स्थान पर पहले स्थान पर रखना चाहते हैं, तो आप कह सकते हैं:

SELECT 
  name, 
  finish_time, 
  [rank] = RANK() OVER (ORDER BY finish_time) -- fastest first
FROM 
  dbo.race_table
ORDER BY 
  finish_time DESC; -- fastest last


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlConnection.Close () स्टेटमेंट का उपयोग करके अंदर

  2. सक्रिय निर्देशिका समूह सदस्यता के लिए C# clr udf

  3. प्राथमिक कुंजी के रूप में GUID का उपयोग करने के लिए, विशेष रूप से प्रदर्शन के संबंध में सर्वोत्तम अभ्यास क्या हैं?

  4. क्या डेटटाइम 2 के बाद की संख्या नैनोसेकंड उद्देश्य के लिए है?

  5. SQL सर्वर में फ्लोट को वर्चर में कैसे बदलें