sql >> Databáze >  >> RDS >> Sqlserver

Použití poddotazů v SQL k nalezení max(count())

K tomu, co děláte, nepotřebujete korelovaný poddotaz. Zde je jeden způsob založený na vašem dotazu:

select CustomerNum, count(CustomerNum)
from Rentals R
group by CustomerNum
having count(CustomerNum) = (select max(cnt)
                             from (select CustomerNum, count(CustomerNum) as cnt
                                   from Rentals
                                   group by CustomerNum
                                  ) rc
                            );

Byl bych nakloněn přesunout poddotaz do from klauzule a použijte poddotazy:

select rc.*
from (select CustomerNum, count(CustomerNum) as cnt
      from Rentals R
      group by CustomerNum
     ) rc join
     (select max(cnt) as maxcnt
      from (select CustomerNum, count(CustomerNum) as cnt
            from Rentals
            group by CustomerNum
           ) rc
     ) m
     on rc.cnt = m.maxcnt;

Jedná se o standardní SQL a měly by fungovat v obou systémech. V praxi bych asi našel způsob, jak použít top nebo row_number() na SQL Server 2008.



  1. hrábě přerušeno! neinicializovaná konstanta Mysql2

  2. Příkazový řádek Windows PSQL:existuje způsob, jak umožnit přihlášení bez hesla?

  3. Jak zkontrolovat, zda existuje trigger v PostgreSQL?

  4. Jak HANDLER FOR NOT FOUND funguje a jaké je jeho použití?