题解 | 统计用户获得积分
统计用户获得积分
https://www.nowcoder.com/practice/22ed0cd240824bb597b3130fef389cea
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求和即可
这里其实可以不用判断,直接写函数就可以
