- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用2 个操作(A 和 B)对用户进行排名。
随着时间的流逝,这两个 Action 都会线性地“松散”值。
Action A:60%权重
Action B:40%权重
Score = SUM [ Action Weight * 1000000 / (Current Timestamp - Action Timestamp) ]
user_id | action | timestamp
1 | A | 1524428013410
1 | B | 1525431531237
2 | B | 1525578131563
得分最高的用户应该排在最前面。
如何编写高性能的 SQL 查询来计算用户的分数?
查询的输出应采用以下格式:
user_id | score
1 | 0.92830
2 | 0.76382
(上面例子中的分数只是我需要的输出格式的占位符)
谢谢!
最佳答案
如果我没理解错的话,你只需要一个普通的GROUP BY
。您可以JOIN
权重。使用 ORDER BY
进行排序。假设您的表名为 action_user
。
SELECT au.`user_id`,
sum(a.`weight` / (current_timestamp() - au.`timestamp`)) `score`
FROM `action_user` au
INNER JOIN (SELECT 'A' `action`,
.6 `weight`
UNION ALL
SELECT 'B' `action`,
.4 `weight`) a
ON a.`action` = au.`action`
GROUP BY au.`user_id`
ORDER BY 2 DESC;
但不确定您的公式。那是一些非常小的数字。也许根据需要更改它。
关于mysql - 如何编写 SQL 查询以根据加权操作和时间衰减对用户进行排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50196110/
liwen01 2024.08.18 前言 无论是在产品开发还是在日常生活中,在使用无线网络的时候,都会经常遇到一些信号不好的问题,也会产生不少疑问: 为什么我们在高速移动的高铁上网络会变
我正在使用 Kinect 获取每个关节的位置和方向,然后将它们发送到 Unity。我注意到值有很多“跳跃”或波动,例如,有时我不移动我的手,而在 Unity 中它会旋转 180 度。 我想要的是一个平
在下面的示例中, #include #include //okay: // template decltype(auto) runner(T&& t, F f) { return f(st
出于某种原因,即使我设置了衰减因子,我的学习率似乎也没有改变。我添加了一个回调来查看学习率,它似乎在每个纪元之后都是一样的。为什么没有变化 class LearningRatePrinter(Call
考虑下面的代码: #include #include using namespace std; template void Test2(future f, Work w) { async([
我是一名优秀的程序员,十分优秀!