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

समुच्चय के आधार पर समान आकार के समूह बनाएं

SELECT  *
FROM(
    SELECT  y.TotalSizeGB,
            CASE 
                WHEN y.AnotherGrp%2=0 AND y.PseudoGrpNumber=0 THEN 2
                WHEN y.AnotherGrp%2=0 AND y.PseudoGrpNumber=1 THEN 1
                WHEN y.AnotherGrp%2=0 AND y.PseudoGrpNumber=2 THEN 0
                ELSE y.PseudoGrpNumber
            END GrpNumber
    FROM(
        SELECT 
            x.ServerName,
            x.TotalSizeGB,
            (2+ROW_NUMBER() OVER(ORDER BY x.TotalSizeGB DESC))%3 PseudoGrpNumber,
            (2+ROW_NUMBER() OVER(ORDER BY x.TotalSizeGB DESC))/3 AnotherGrp,
            ROW_NUMBER() OVER(ORDER BY x.TotalSizeGB DESC) RowNum
        FROM    @Servers x
    )y
)z
PIVOT( SUM(z.TotalSizeGB) FOR z.GrpNumber IN([0],[1],[2]) ) pvt;

परिणाम:

0       1       2
------- ------- -------
2048.02 1925.80 2037.14

कुछ स्पष्टीकरण:

विचार TotalSizeGB . पर अवरोही डेटा को सॉर्ट करना है कॉलम। फिर प्रत्येक 3 अनुक्रमिक पंक्तियों को एक साथ समूहीकृत किया जाता है (कॉलम AnotherGrp ) सबसे पहले DESC . में ऑर्डर करें और फिर ASC . में आदेश (स्तंभ PseudoGroNumber और GrpNumber ) यदि इसे निष्पादित किया जाता है SELECT * FROM () y व्युत्पन्न तालिका तो परिणाम होंगे:

ServerName TotalSizeGB  PseudoGrpNumber AnotherGrp GrpNumber RowNum
---------- ------------ --------------- ---------- --------- ------
Server10   1023.35      0               1          0         1
Server9    901.23       1               1          1         2
Server8    890.12       2               1          2         3
Server7    789.01       0               2          2         4
Server6    678.90       1               2          1         5
Server5    567.89       2               2          0         6
Server4    456.78       0               3          0         7
Server3    345.67       1               3          1         8
Server2    234.56       2               3          2         9
Server1    123.45       0               4          2         10


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. गंभीर त्रुटि:C:\xampp\htdocs में अपरिभाषित फ़ंक्शन sqlsrv_connect () पर कॉल करें

  2. DATENAME() SQL सर्वर में उदाहरण

  3. SQL सर्वर प्रदर्शन समस्याओं की पहचान करना

  4. SQL क्वेरी समायोजन

  5. एसक्यूएल सर्वर 2005 में सिंगल और डबल कोट्स क्वेरी डालें