mysql - 如何在某个级别上获得用户的位置?(mysql)
问题描述
这是表(achievements_t):
id Primary int(11) AUTO_INCREMENT
timestamp current_timestamp()
user_id varchar(34)
level varchar(40)
score int(11)
replay mediumblob
现在对于每个级别和某个 user_id,我想要两个数字,一个位置,两个总条目。
“LevelX 你已经到位 12 of 54”
我怎样才能做到这一点?
解决方案
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY level ORDER BY score desc) rn
FROM achievements_t)
)
SELECT cte.user_id,cte.level,cte.rn as userPlace,sum(t.score) as totalEntry
FROM cte cte inner join achievements_t t
WHERE
t.user_id=cte.user_id
group by user_id,level
推荐阅读
- javascript - ReactJS - 要在许多组件中实现的功能
- postgresql - 使用 pqxx 游标
- php - Woocommerce产品存档上的条件添加到购物车按钮
- azure - 有人可以让我知道在哪种情况下以及我应该使用哪种方法来上传/下载 blob?
- php - php格式化日期数组
- android - Webview 未正确获取 URL
- mysql - 本地计算机上的 MySQL80 服务启动和停止。怎么解决?
- javascript - Laravel 使用 ajax 提交表单在 td 标签内不起作用
- reactjs - React HashRouter 无法从主页重定向到辅助页面
- react-native - react-native 链接无法工作,当我运行 react-native 链接时