2

注文数が多い上位 2 人の顧客を見つけたい。
テーブルは次のようになります。

CustomerId  OrderId ProductId
101         1       A
101         3       B
101         4       C
102         9       D
102         9       E
103         11      E
103         22      F

これは、SELECT クエリから必要な出力です。

CustomerId  OrderId 
101         1
101         3
101         4
103         11
103         22  

解決策は私の心にクリックされていません...次のクエリを使用して途中まで到達しました-

SELECT CustomerId, OrderId
FROM dbo.CustomerOrder
GROUP BY CustomerId, OrderId

これにより、CustomerId と OrderId の個別のペアが得られます。

誰でも助けてください。

4

7 に答える 7

3

以下のコードが機能することを示すSQL Fiddleの例を次に示します。

SELECT DISTINCT CO.CustomerId, CO.OrderID FROM 
(
  SELECT TOP(2) COS.CustomerId, COUNT(DISTINCT COS.orderId) as NoOfOrders
  FROM custorders AS COS
  GROUP BY COS.CustomerId
  ORDER BY COUNT(DISTINCT COS.orderId) DESC, CustomerId  DESC
) AS COM 
INNER JOIN custorders AS CO
  ON COM.CustomerId = CO.CustomerId
于 2013-10-29T01:33:04.557 に答える
0
select customername from customers where customerid  in 
   (select top 2 customerid from 
       (select count(*), customerid FROM orders
        group by customerid
        order by count(*) DESC))
于 2014-04-06T11:54:26.260 に答える