【发布时间】:2018-04-18 15:47:32
【问题描述】:
我是 SQL 新手。 我正在开发一个对产品进行排名的功能。每个产品都由用户评分,评分为 1-5 星。我想选择 5 个得分最高和最受欢迎(被很多人评价)的顶级产品。 怎么写sql?
说明:
表格:
- Review table -
product id,
user id,
score
- Product table -
product id,
product name
- User table -
user id,
user name
每个用户可以为许多产品评分
预期回报:得分最高和最受欢迎(被很多人评价)的 5 个产品 ID。
样本数据:
A: 5, 4, 4, 3, 1 (5 voted)
B: 5, 4, 3 (3 voted)
C: 1, 2, 1, 1, 2, 1 (6 voted)
D: 5 (1 voted)
E: 5, 4 (2 voted)
F: 5, 5 (2 voted)
D 是最高分但不受欢迎,C 是最受欢迎但低分。我想选择得分高且受欢迎的最佳产品。 请给我有关此案的建议。
非常感谢!
【问题讨论】:
-
如果你只想要产品 id 那么产品和用户表是无关紧要的,你想对抽奖做什么?
-
我想选择 5 个质量最好的产品,按投票和分数排名(通过添加评论,一个用户投票,他们为产品设置分数)。你能重新检查更新的样本数据吗?
-
这真的取决于你想怎么做。例如,您肯定首先想要评分和人气最高的东西,但如果不是这样呢?当某些东西不受欢迎但评分很高时会发生什么?如果某项评分高但不受欢迎怎么办?您如何期望这些案件按顺序出现?
-
你完全正确。我无法定义什么是最好的产品,最受欢迎或高评价会产生更大的影响。在现实世界中,哪种产品是最好的。你能给我建议,甚至是关于心态的建议吗?非常感谢!