gpt4 book ai didi

sql - 需要有关查询的建议以列出排名前 5 的游戏

转载 作者:行者123 更新时间:2023-11-29 13:15:58 27 4
gpt4 key购买 nike

您好,我正在帮助我的 friend 创建一个显示游戏评级的网站。

我的表和列是:

游戏

  • 游戏编号
  • 标题
  • 类型

评分

  • 用户编号
  • 游戏编号
  • 评分
  • 时间戳

用户

  • 用户编号
  • 性别
  • 年龄
  • 职业
  • 邮政编码

我需要帮助创建一个列出以下内容的 SQL 查询:

  • 按用户性别划分的前 5 名最高评分游戏
  • 每个用户年龄段评分最高的前 5 名游戏
  • 每个职业评分最高的前 5 场比赛

我试过查看 https://www.w3schools.com/sql/sql_groupby.asp但我不擅长 SQL,可以使用一些建议

最佳答案

我建议使用INNER JOINS 将数据拉到一起:

SELECT g.title, g.genre, r.rating, u.gender
FROM rating r
INNER JOIN u.user_id on r.user_id = u.user_id
INNER JOIN g.game_id on r.game_id = g.game_id

然后可以使用 ORDER BY 子句对这些数据进行排序,以便相应地对评级进行排序:

SELECT g.title, g.genre, r.rating, u.gender
FROM rating r
INNER JOIN u.user_id on r.user_id = u.user_id
INNER JOIN g.game_id on r.game_id = g.game_id
ORDER BY r.rating DESC;

为了仅返回前 number 个结果,请使用 LIMIT number 子句。

下面是一个完整的例子:

SELECT g.title, g.genre, r.rating, u.gender
FROM rating r
INNER JOIN u.user_id on r.user_id = u.user_id
INNER JOIN g.game_id on r.game_id = g.game_id
ORDER BY r.rating DESC
LIMIT 5;

此示例针对您列出的第一个 SQL 查询需求量身定制 - 其他两个查询可以通过遵循相同的结构来实现。


编辑:

在进一步了解 OP 的原始帖子后,上面的完整示例查询在下面进行了改编。由于要求根据用户的平均评分返回排名前 5 的游戏 - 必须使用子句 AVG() 来获取游戏评分的平均值。

虽然使用 GROUP BY 子句允许为每个唯一的 game_id 计算平均值。这些条款的使用示例:

SELECT g.title, g.genre, AVG(r.rating), u.gender
FROM rating r
INNER JOIN u.user_id on r.user_id = u.user_id
INNER JOIN g.game_id on r.game_id = g.game_id
GROUP BY g.game_id
ORDER BY AVG(r.rating) DESC
LIMIT 5;

关于sql - 需要有关查询的建议以列出排名前 5 的游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48931975/

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