gpt4 book ai didi

3 种不同测试的首次尝试的 MYSQL 平均分数 - IN GROUP BY

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

所以我有两张 table

Users: id, name
Results: id, test_id, user_id, score

我需要获取用户第一次尝试对所有三个 test_id 的平均值。

用户可能尚未完成全部 3 项测试。

我这里的查询确实有效,但速度非常慢,有没有办法加快速度?

SELECT AVG(score) 
FROM results
WHERE id IN(SELECT MIN(id)
FROM results
WHERE complete = 1
GROUP
BY test_id)

最佳答案

此方法使用子查询来获取每个用户/测试组合的最小 ID。然后它连接回 results 以获取 score 并将其用于聚合:

SELECT u.*, AVG(r.score)
FROM user u LEFT JOIN
(SELECT user, testid, MIN(id) as minid
FROM results r
WHERE complete = 1
GROUP BY user_id, test_id
) ut
ON ut.user_id = u.id LEFT JOIN
results r
ON r.id = ut.minid
GROUP BY u.id;

这会产生每个用户的平均值(这就是我解释问题的方式)。如果您想要每次测试的第一个测试的所有用户的平均值,请从查询中删除 group byuser 表。

关于3 种不同测试的首次尝试的 MYSQL 平均分数 - IN GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33196726/

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