因此,目前我有一个数据库查询,该查询根据评论评分对要退货的产品进行订购。
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
但是它们不起作用,感觉有些数据库功能需要使用。 有什么想法吗?
答案 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
请注意,就您而言,您无需在第一个排序标准中使用乘法/除法逻辑:此类线性算术运算对排序不敏感。