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.