0

谁能帮我理解如何在 SQL Server 中使用 RAND() 函数?

我有一个场景,我想根据评级以随机顺序从产品表中获取随机产品。

另外,在这方面,我想优先考虑评级较高的产品,而不是评级较低的产品,以排在首位。

但并不是每次只有评分较高的产品才会排在首位;有时评级较低的产品应该放在首位。

截至目前,我是通过 完成的NEWID(),它每次都给我随机排序,但它不考虑产品的排名。

表列:ProductID, ProductName, Rating

SELECT ROW_NUMBER() OVER(ORDER BY NEWID() ASC) AS ProductOrder, ProductID, Rating
FROM dbo.VIHC_Products
ORDER BY ProductOrder

此查询每次都会给我随机产品,但不能满足我的标准,即在大多数情况下获得较高评级产品而不是较低评级产品。

4

1 回答 1

0

只需将行号乘以评级和降序:

SELECT Rating * ROW_NUMBER() OVER(ORDER BY NEWID() ASC) AS ProductOrder, ProductID, Rating
FROM dbo.VIHC_Products
ORDER BY ProductOrder DESC
于 2020-07-10T14:02:53.753 回答