-6

こんにちは、トップ 10 の製品を取得するのに問題があります。

シナリオは次のとおりです。productid と date を含む製品のテーブルがあります。IDで製品を取得してループする方法がありますが、最も頻繁にリストされている製品を取得する方法がわかりません。

範囲の日付から上位 10 個の製品を取得する必要があります。

基本的に、在庫のある製品のリストと製品FKの注文のリストがあります

各注文から製品 FK を取得し、すべての注文から最も頻繁に使用される上位 10 製品を取得します。

4

4 に答える 4

0

sql と asp.net でタグ付けしたように、それは sql server db である必要があります。

2 つの日付の間の日付の製品テーブルから上位 10 個の product_id取得できます(日付をvarcharまたはテキストとして入力している場合は、それを datetime 形式に変換する必要があります)。10個の最新製品を提供します。

ここにコード例があります。

SELECT TOP 5 Product_ID FROM Product where Product.Dates between (SELECT convert(datetime, '2012-04-17 14:42:06.273', 120)) and (SELECT convert(datetime, '2012-04-19 10:39:08.477', 120)) order by Product.Dates desc
于 2013-01-08T10:29:15.033 に答える
0

これが役立つ場合があります。両方のクエリを日付で分割できます。

-- Top n-paid in all Depts:
SELECT * FROM 
 ( SELECT deptno, ename, sal
    , ROW_NUMBER() OVER (order by sal desc, ename) as row_num
    --, RANK () OVER (PARTITION BY deptno ORDER BY sal desc) ranks
    --, DENSE_RANK () OVER (PARTITION BY deptno ORDER BY sal desc) d_ranks
   FROM scott.emp )
WHERE row_num  <= 10 -- TOP 10 in all depts --

-- Between rows --
SELECT * FROM 
   ( SELECT deptno, ename, sal, ROW_NUMBER() OVER (ORDER BY ename) Row_Num FROM scott.emp)
  WHERE Row_Num BETWEEN 5 and 10
于 2013-01-08T14:54:39.573 に答える
0

ストアド プロシージャを作成してテーブルを呼び出すだけで、製品リストを簡単に選択できます。

ストアド プロシージャでは、次を使用して製品リストを選択できます。 ORDER BY

たとえばの句。

SELECT * FROM PRODUCT_TABLE ORDER BY DATE_COLUMN

ありがとう

于 2013-01-08T12:01:51.453 に答える
0

私たちのタグに基づいて、あなたは SQL データベースを使用していると推測しています。あなたの質問から、同じ製品を複数回リストしていることがわかります...その場合は、次のようなことができます。

Select * From "table" Group By "product" order by count(*) limit 10

于 2013-01-08T10:19:35.840 に答える