嗨,我在获取前 10 名产品时遇到问题。
场景是:我有包含 productid 和 date 的产品表。我有方法通过 Id 获取产品并循环它,但不知道如何获取最常见的产品。
我需要从一个范围日期获得前 10 种产品。
基本上我有带有库存的产品列表和带有产品 FK 的订单列表
我从每个订单中获取产品 FK,并从所有订单中获取最常见的前十名产品。
我根据我们的标签猜测您使用的是 SQL 数据库,并且根据您多次列出相同产品的问题......如果是这种情况,您可以执行以下操作:
Select * From "table" Group By "product" order by count(*) limit 10
正如您在 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
您可以通过创建存储过程并调用您的表来简单地选择您的产品列表。
在存储过程中,您可以使用
ORDER BY
例如从句。
SELECT * FROM PRODUCT_TABLE ORDER BY DATE_COLUMN
谢谢
这可能会有所帮助。您可以按日期对两个查询进行分区:
-- 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