3

現在、MSSQLデータベースから最も人気のあるproductIDを取得しようとしています。これはテーブルがどのように見えるかです(少しダミーデータがあります):

OrderItems:

+--+-------+--------+---------+
|ID|OrderID|Quantity|ProductID|
+--+-------+--------+---------+
| 1|      1|       1|        1|
| 2|      1|       1|        2|
| 3|      2|       1|        1|
| 4|      2|      50|        2|

OrderIDフィールドは無視できますが、このテーブルから最も人気のあるProductIDを見つけて、発生頻度順に並べる必要があります。結果セットは次のようになります。

+--------+
|PoductID|
+--------+
|       2|
|       1|

ProductID 2の合計数量は51であるため、最初に出力する必要があり、次に合計数量が2しかないProductID1が続きます。

(注:クエリはMSSQL-2008と互換性がある必要があります)

4

2 に答える 2

8
SELECT
  productID
FROM
  yourTable
GROUP BY
  productID
ORDER BY
  SUM(Quantity) DESC

GROUP BYを許可しますが、で使用できるようにするためにSUM()で使用する必要はありません。SELECTORDER BY

于 2012-06-14T10:25:39.013 に答える
3
select ProductID
from OrderItems
group by ProductId
order by sum(Quantity) desc;
于 2012-06-14T10:25:48.590 に答える