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