Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Pilih baris dengan nilai maksimal dalam satu kolom

Ada beberapa pendekatan:

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

ATAU

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)

ATAU

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

Meskipun menggunakan TOP 1 mungkin bukan yang Anda cari, dengan cara lain jika ada 2 kantor dengan jumlah pelanggan yang sama keduanya akan dikembalikan, sedangkan TOP 1 hanya akan mengembalikan 1 di antaranya (mungkin diurutkan berdasarkan nama kantor) . Jika Anda hanya ingin 1 catatan, maka ini adalah metode terbaik



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MASUKKAN NILAI YANG TIDAK ADA

  2. Memilih COUNT(*) dengan DISTINCT

  3. Pengoptimalan Kueri SQL

  4. T-SQL Menghapus semua baris dari tabel ketika subquery salah format

  5. GROUP BY untuk menggabungkan/menyatukan kolom