SELECT
    user_id,
    SUM(
        CASE 
            WHEN TIMESTAMPDIFF(MINUTE, visit_time, leave_time) < 0 THEN 0 
            ELSE FLOOR(TIMESTAMPDIFF(MINUTE, visit_time, leave_time) / 10)
        END
    ) AS point
FROM visit_tb
GROUP BY user_id
ORDER BY point DESC

需要注意的是

在了解了timestampdiff函数之后,时间差值的问题解决了

通过取整函数去计算用户的积分

# ceil(n) 取大于等于数值n的最小整数;

# floor(n) 取小于等于数值n的最小整数;

之后通过user_id分组,使用sum求和即可

这里其实可以不用判断,直接写函数就可以