ほとんどの書籍を購入した Web サイトの最も人気のあるユーザーを取得するためのクエリを作成しています。数は、上位 100、上位 50、または上位 10 ユーザーのように動的である必要があります。私は目的のために以下のクエリを書きましたが、問題を見つけました:
DECLARE @TOPNumber INT
SET @TOPNumber = 10
SELECT
S.UserName,
S.Email,
TOPST.NumberOfPurchase
FROM
Subscriber S
JOIN
(
SELECT ROW_NUMBER() Over(order by [FK_Subscriber])as Slno, FK_Subscriber,COUNT(*) NumberOfPurchase FROM SubscriberPurchase
GROUP BY FK_Subscriber
--ORDER BY FK_Subscriber
) TOPST ON S.PK_SubscriberID = TOPST.FK_Subscriber AND TOPST.Slno <= @TOPNumber
ORDER BY TOPST.NumberOfPurchase DESC
ご覧のとおり、内部クエリの ORDER BY 句はコメントされているため、その場所では使用できません。できれば、クエリで目的の結果が得られます。
誰でもこれを行う方法を手伝ってもらえますか。データベースに何百万ものレコードがあるため、適切に最適化する必要があります