我已经建立了一个“行走挑战”的网站,该网站有一张记录行走里程的表格。
目标是2105英里(纽卡斯尔,英国到伊斯坦布尔)。
在主页上,我有一个排行榜,目前显示已经累计最多里程的5支队伍。
我使用以下查询来实现此目的:
SELECT
SUM(log.distance) AS l,
log.*,
team.*
FROM
team
RIGHT JOIN
log ON team.teamname = log.teamname
GROUP BY
log.teamname
ORDER BY
l DESC
然而,我希望这个排行榜能够展示首先完成的5支队伍,而不是那些走得最远的队伍。即首先达到2105英里的球队。
可以查看当前网站here
答案 0 :(得分:3)
在表中添加一个可以为空的completedDate
字段,并在有人完成比赛时填充它。按完成日期排序。
没有办法按谁首先完成订购。
答案 1 :(得分:0)
由于你有一个时间戳字段,每当一个团队输入它走过的里程数时就会获得当前时间,你可以做这样的事情:
SELECT
SUM(log.distance) AS l,
MAX(log.timestamp) AS t,
log.*,
team.*
FROM
team
RIGHT JOIN
log ON team.teamname = log.teamname
GROUP BY
log.teamname
WHERE
l >= 2105
ORDER BY
t ASC
请注意,只有在完成目标距离后您不允许团队添加额外里程时才会有效。 如果他们在完成目标后能够增加额外里程,请告诉我,我会尝试寻找其他查询