嗨,我有一个问题,获得前10名的产品。
场景是:我有包含productid和date的产品表。我有方法通过Id获取产品并循环它,但不知道如何获得当时列出的最频繁的产品。
我需要从一个范围的日期获得十大产品。
基本上我有产品清单及其产品FK
的订单和库存清单我从每个订单中获得产品FK,并获得所有订单中最常见的十大产品。
答案 0 :(得分:0)
我猜测你的标签是基于你使用SQL数据库,并且你的问题是你多次列出同一个产品...如果是这样的话,你可以这样做:
Select * From "table" Group By "product" order by count(*) limit 10
答案 1 :(得分:0)
正如你在sql和asp.net中标记的那样,它应该是一个sql server db,
您可以从产品表中获取 TOP 10 product_id,这两个日期 BETWEEN (如果您输入日期作为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
答案 2 :(得分:0)
您只需通过创建存储过程并调用表格来选择产品列表。
在存储过程中,您可以使用选择产品列表
ORDER BY
子句 例如。
SELECT * FROM PRODUCT_TABLE ORDER BY DATE_COLUMN
由于
答案 3 :(得分: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