sql >> データベース >  >> RDS >> Sqlserver

1 つの列に最大値がある行を選択

    いくつかのアプローチがあります:

    SELECT OfficeName, TotalFROM ( 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 ) cWHERE 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 CTEWHERE Total =(SELECT MAX(Total) FROM CTE)  

    または

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

    TOP 1 を使用すると目的とは異なる場合がありますが、他の方法では同じ数の顧客を持つ 2 つのオフィスがある場合、両方が返されますが、TOP 1 ではそのうちの 1 つだけが返されます (おそらくオフィス名の順)。 .レコードが 1 つだけ必要な場合は、これが最適な方法です



    1. PostgreSQL:どのように脱出するのですか?

    2. MySqlがBETWEENクエリを自動的に最適化しないのはなぜですか?

    3. ClusterControlが仮想IPを構成する方法とフェイルオーバー中に何を期待するか

    4. FPDFセルポジショニング