-6

嗨,我在获取前 10 名产品时遇到问题。

场景是:我有包含 productid 和 date 的产品表。我有方法通过 Id 获取产品并循环它,但不知道如何获取最常见的产品。

我需要从一个范围日期获得前 10 种产品。

基本上我有带有库存的产品列表和带有产品 FK 的订单列表

我从每个订单中获取产品 FK,并从所有订单中获取最常见的前十名产品。

4

4 回答 4

0

我根据我们的标签猜测您使用的是 SQL 数据库,并且根据您多次列出相同产品的问题......如果是这种情况,您可以执行以下操作:

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

于 2013-01-08T10:19:35.840 回答
0

正如您在 sql 和 asp.net 中标记的那样,它应该是一个 sql server db,

您可以从产品表中获取10 个产品 ID,这些产品表的日期位于两个日期之间(如果您输入的日期为 varchar 或文本,则需要将其转换为日期时间格式),然后按日期降序排列,这样将为您提供十款最新产品。

这是一个示例代码。

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

您可以通过创建存储过程并调用您的表来简单地选择您的产品列表。

在存储过程中,您可以使用 ORDER BY

例如从句。

SELECT * FROM PRODUCT_TABLE ORDER BY DATE_COLUMN

谢谢

于 2013-01-08T12:01:51.453 回答
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 回答