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

Menggunakan sub-kueri dalam SQL untuk menemukan max(count())

Anda tidak memerlukan subquery yang berkorelasi untuk apa yang Anda lakukan. Berikut ini salah satu cara berdasarkan kueri Anda:

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
                            );

Saya akan cenderung untuk memindahkan subquery ke from klausa dan gunakan subkueri:

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;

Ini adalah SQL standar dan harus bekerja di kedua sistem. Dalam praktiknya, saya mungkin akan menemukan cara untuk menggunakan top atau row_number() pada SQL Server 2008.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa SQL Server 2008 memblokir SELECT pada transaksi panjang INSERT?

  2. SQL yang dioptimalkan untuk struktur pohon

  3. Skrip SQL untuk mengubah SEMUA Kunci Asing untuk ditambahkan ON DELETE CASCADE

  4. Cara Mengirim Email Hasil Query di SQL Server (T-SQL)

  5. Urutan Instal yang Tepat Untuk Visual Studio 2010 dengan SQL Server 2008 dan Office 2007?