mysql SUM直到达到值

时间:2011-01-17 14:00:32

标签: php mysql

我已经建立了一个“行走挑战”的网站,该网站有一张记录行走里程的表格。

目标是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

2 个答案:

答案 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

请注意,只有在完成目标距离后您不允许团队添加额外里程时才会有效。 如果他们在完成目标后能够增加额外里程,请告诉我,我会尝试寻找其他查询