gpt4 book ai didi

mysql - 用最少的时间总和获得最多的用户分数

转载 作者:行者123 更新时间:2023-11-29 00:31:26 24 4
gpt4 key购买 nike

我有看起来像这样的 MySql 表

scores
game_id | level | score | time
--------+-------+-------+-----
1 | 1 | 1 | 10
1 | 2 | 0 | 10
1 | 3 | 1 | 20
2 | 1 | 1 | 5
2 | 2 | 1 | 15
2 | 3 | 0 | 10
3 | 1 | 0 | 10
3 | 2 | 0 | 10
3 | 3 | 0 | 10

games
game_id | user_id
--------+--------
1 | 1
2 | 1
3 | 2

我需要查询它以便计算每场比赛的分数和时间,所以它看起来像这样

game_id | user_id | sumPoints | sumTime
--------+---------+-----------+--------
1 | 1 | 2 | 40
2 | 1 | 2 | 30
3 | 2 | 0 | 30

而且我需要为每个用户获得最佳分数(最佳分数我指的是 max(sumPoints) 和 min(sumTime),所以它看起来像这样:

game_id | user_id | sumPoints | sumTime
--------+---------+-----------+--------
2 | 1 | 2 | 30
3 | 2 | 0 | 30

这就是最终结果。我可以在积分和时间相加的地方做部分工作,但我不知道如何获得每个用户的最高分。我想知道,我怎样才能通过 SQL 查询来做到这一点?提前致谢

最佳答案

下面的查询将为您提供部分结果。

SELECT  a.game_ID, 
b.user_id,
SUM(a.Score) sumPoint,
SUM(a.time) sumTime
FROM scores a
INNER JOIN games b
ON a.game_ID = b.game_ID
GROUP BY a.game_ID, b.user_id

输出

╔═════════╦═════════╦══════════╦═════════╗
║ GAME_ID ║ USER_ID ║ SUMPOINT ║ SUMTIME ║
╠═════════╬═════════╬══════════╬═════════╣
║ 1 ║ 1 ║ 2 ║ 40 ║
║ 2 ║ 1 ║ 2 ║ 30 ║
║ 3 ║ 2 ║ 0 ║ 30 ║
╚═════════╩═════════╩══════════╩═════════╝

由于 MySQL 不像任何其他 RDBMS 那样支持 windows 函数,因此生成您想要的结果可能会很麻烦。

SELECT  a.*
FROM
(
SELECT a.game_ID,
b.user_id,
SUM(a.Score) sumPoint,
SUM(a.time) sumTime
FROM scores a
INNER JOIN games b
ON a.game_ID = b.game_ID
GROUP BY a.game_ID, b.user_id
) a
INNER JOIN
(
SELECT user_ID,
MIN(sumTime) sumTime
FROM
(
SELECT a.game_ID,
b.user_id,
SUM(a.Score) sumPoint,
SUM(a.time) sumTime
FROM scores a
INNER JOIN games b
ON a.game_ID = b.game_ID
GROUP BY a.game_ID, b.user_id
) s
GROUP BY user_ID
) b ON a.user_id = b.user_id AND
a.sumTime = b.sumTime

输出

╔═════════╦═════════╦══════════╦═════════╗
║ GAME_ID ║ USER_ID ║ SUMPOINT ║ SUMTIME ║
╠═════════╬═════════╬══════════╬═════════╣
║ 2 ║ 1 ║ 2 ║ 30 ║
║ 3 ║ 2 ║ 0 ║ 30 ║
╚═════════╩═════════╩══════════╩═════════╝

关于mysql - 用最少的时间总和获得最多的用户分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com