按平均评分排序,但也按总评论数排序

时间:2020-04-08 00:00:42

标签: sql stored-procedures sql-order-by

因此,目前我有一个数据库查询,该查询根据评论评分对要退货的产品进行订购。

CASE WHEN p.ApprovedRatingSum > 0 AND p.ApprovedTotalReviews > 0 THEN ((p.ApprovedRatingSum*100)/ p.ApprovedTotalReviews)/5 END DESC

我想再说一遍,并按照评论数顺序订购具有相同评分值的产品。 因此,对于评级为5.0的产品,最高计数将首先返回到最低计数。 就像是 -椅子,评级5.0(10评论) -桌子,评级5.0(9评论) -沙发,评分5.0(7评论) 然后针对每个评分值

我对数据库不是很坚强。 我尝试过

CASE WHEN p.ApprovedRatingSum > 0 AND p.ApprovedTotalReviews > 0 THEN ((p.ApprovedRatingSum*100)/ p.ApprovedTotalReviews)/5 GROUP BY p.ApprovedTotalReviews DESC END DESC

CASE WHEN p.ApprovedRatingSum > 0 AND p.ApprovedTotalReviews > 0 THEN ((p.ApprovedRatingSum*100)/ p.ApprovedTotalReviews)/5 ORDER BY p.ApprovedTotalReviews DESC END DESC

但是它们不起作用,感觉有些数据库功能需要使用。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果我正确地跟随了您,则只需向查询添加其他排序条件:

ORDER BY
    CASE WHEN p.ApprovedRatingSum > 0 AND p.ApprovedTotalReviews > 0 
        THEN p.ApprovedRatingSum / p.ApprovedTotalReviews END DESC,
    ApprovedTotalReviews DESC  -- second sort criteria

请注意,就您而言,您无需在第一个排序标准中使用乘法/除法逻辑:此类线性算术运算对排序不敏感。

相关问题