【发布时间】:2011-02-09 03:17:42
【问题描述】:
<hyperbole>回答这个问题的人都可以声称自己解决了世界上最具挑战性的 SQL 查询,根据你的真实情况。</hyperbole>
使用 3 个表格:用户、徽章、奖励。
关系:用户有很多奖励;奖励属于用户;徽章有很多奖项;奖品属于徽章。所以 badge_id 和 user_id 是 Awards 表中的外键。
这里的业务逻辑是,每次用户赢得徽章时,他/她都会收到它作为奖励。一个用户可以多次获得相同的徽章。每个徽章都分配有一个指定的点值(point_value 是徽章表中的一个字段)。例如,BadgeA 可以值 500 分,BadgeB 可以值 1000 分,等等。再举一个例子,假设 UserX 赢得了 10 次 BadgeA 和 5 次 BadgeB。 BadgeA 500 Points,BadgeB 1000 Points,UserX 累计10000 Points ((10 x 500) + (5 x 1000))。
这里的最终游戏是返回累积徽章积分最多的前 50 名用户的列表。
你能做到吗?
【问题讨论】:
-
大声笑...是的,如果 stackoverflow 允许我将赏金转移给你
-
为什么要作为 SQL 查询来执行此操作?
-
这是作业吗?如果是这样,请标记为这样。
-
@keruilin:我知道将您当前的问题自我评估为“世界上最难的问题”应该很有趣。但实际上它不是,既不是世界上最难的问题,也不是有趣的问题。 ;) 请给它一个适当的标题,至少谷歌可以更容易地找到这个线程。