MS SQL 2012 の使用
気になる3列のテーブルを用意する
SubcategoryID (int) メーカー (nvarchar) モデル (nvarchar)
最も人気のある上位 10 の製造元 (テーブルに最も多くのエントリがあるもの) を取得し、それら 10 の製造元ごとに最も人気のある 10 のサブカテゴリを取得し、それらの各サブカテゴリで最も人気のある上位 5 つのモデルを取得します。
最終的に、十分なデータがあると仮定すると、最大 500 件の結果が得られるはずです。
上位 10 メーカー X 上位 10 サブカテゴリ X 上位 5 モデル
私がこれまでにこれを行うのに最も近いのはこれです:
SELECT COUNT(*), SubcategoryID, Manufacturer from dbo.Product
WHERE ManufacturerID IN
(
SELECT TOP 10 Manufacturerid FROM dbo.Product
WHERE Manufacturer != '' AND Manufacturer != 'NOT SPECIFIED' AND Manufacturer IS NOT NULL AND ManufacturerID IS NOT null
AND Deleted = 0 AND StatusID = 1
GROUP BY Manufacturerid
ORDER BY COUNT(*) DESC
)
GROUP BY Manufacturer, dbo.Product.SubcategoryID
ORDER BY Manufacturer, COUNT(*) desc
しかし、それは実際には機能しません。なぜなら、各メーカーに対して 10 を超えるレコードが得られるからです。まだモデルを入手しようとはしていません。
これについての助けに感謝します、ありがとう
編集:私はこれを正しく説明しませんでした.トップ10の最も人気のあるメーカー全体ではなく、各サブカテゴリ内のトップ10の最も一般的なメーカーを取得したい.
言い換えると:
select top 10 manufacturers from product where subcategoryid = 123 group by manufacturer order by count(*) desc
しかし、テーブルのサブカテゴリごとにそれが必要です。そして、各サブカテゴリ/メーカー内の上位 5 モデル