-- 计算用户总积分:访问时长每满10分钟得1分(不足10分钟不计)
SELECT
user_id, -- 用户ID
-- 计算总积分:访问时长除以10后向下取整,再累加所有符合条件的访问记录
SUM(FLOOR(visit_duration / 10)) AS point
FROM (
-- 子查询:计算每个用户每次访问的时长(分钟)
SELECT
user_id,
DATE(visit_time) AS visit_time, -- 访问日期
-- 将访问时长从秒转换为分钟:(离开时间戳 - 访问时间戳) / 60
(UNIX_TIMESTAMP(leave_time) - UNIX_TIMESTAMP(visit_time)) / 60 AS visit_duration
FROM visit_tb
) t
-- 筛选条件:仅统计访问时长≥10分钟的记录
WHERE visit_duration >= 10
-- 按用户分组,计算每个用户的总积分
GROUP BY user_id
-- 按积分从高到低排序
ORDER BY point DESC;

京公网安备 11010502036488号