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

एक कॉलम में अधिकतम मान वाली पंक्ति का चयन करें

कई तरीके हैं:

SELECT  OfficeName, Total
FROM    (   SELECT  o.OfficeName, c.Total, MAX(Total) OVER() [MaxTotal]
            FROM    Offices o
                    LEFT JOIN
                    (   SELECT  OfficeID, COUNT(*) Total
                        FROM    Customers
                        GROUP BY OfficeID
                    ) c 
                        ON o.OfficeID = c.OfficeID
            WHERE   o.ClusterID = 29
        ) c
WHERE   Total = MaxTotal

या

WITH CTE AS
(   SELECT  o.OfficeName, c.Total
    FROM    Offices o
            LEFT JOIN
            (   SELECT  OfficeID, COUNT(*) Total
                FROM    Customers
                GROUP BY OfficeID
            ) c 
                ON o.OfficeID = c.OfficeID
    WHERE   o.ClusterID = 29
)
SELECT  *
FROM    CTE
WHERE   Total = (SELECT MAX(Total) FROM CTE)

या

SELECT  TOP 1 o.OfficeName, c.Total
FROM    Offices o
        LEFT JOIN
        (   SELECT  OfficeID, COUNT(*) Total
            FROM    Customers
            GROUP BY OfficeID
        ) c 
            ON o.OfficeID = c.OfficeID
WHERE   o.ClusterID = 29
ORDER BY Total DESC

हालाँकि TOP 1 का उपयोग करना वह नहीं हो सकता है जो आप चाहते हैं, अन्य विधियों के साथ यदि समान संख्या में ग्राहकों के साथ 2 कार्यालय हैं, तो वे दोनों वापस कर दिए जाएंगे, जबकि TOP 1 इनमें से केवल 1 लौटाएगा (शायद कार्यालय के नाम के क्रम में) . यदि आप केवल 1 रिकॉर्ड चाहते हैं, तो यह सबसे अच्छा तरीका है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. निरर्थक सूचकांक खोजने के लिए टी-एसक्यूएल

  2. SQL सर्वर डेटाबेस में लार्ज स्ट्रिंग को स्टोर करने का सबसे अच्छा तरीका?

  3. सी # प्रोग्राम के भीतर संग्रहीत प्रक्रिया को कैसे निष्पादित करें

  4. IF..ELSE IF का उपयोग करके टी-एसक्यूएल एसपी में नियंत्रण प्रवाह - क्या अन्य तरीके हैं?

  5. दूरस्थ प्रक्रिया कॉल sql सर्वर 2008 R2 के साथ विफल रही