MySQL:创建求和列的查询,同时从其他表中收集信息

Posted

技术标签:

【中文标题】MySQL:创建求和列的查询,同时从其他表中收集信息【英文标题】:MySQL: Creating query that sums column while gathering info from other tables 【发布时间】:2021-02-28 04:43:44 【问题描述】:

列出骑手的名字,RaceLevel 为 Race_Level 和基于其位置的所有点的总数。确保你不 列出尚未参加任何比赛(尚未上名)的所有车手。将数据从高到高排序 总分最低

这是我迄今为止尝试过的。

SELECT RIDERS.FIRST_NAME, RIDERS.LAST_NAME, RACES.RACE_LEVEL, PARTICIPATION.PLACEMENT
FROM RIDERS, RACES, PARTICIPATION
WHERE RIDERS.RIDER_ID = PARTICIPATION.RIDER_ID AND RACES.RACE_LEVEL = 'EASY' AND PARTICIPATION.PLACEMENT > 0;

我已尝试添加SUM(PARTICIPATION.PLACEMENT),但它会删除所有结果并留下一行。我需要弄清楚如何计算每个人的位置。

【问题讨论】:

你需要学习GROUP BY子句。 【参考方案1】:

我尝试添加 SUM(PARTICIPATION.PLACEMENT),但它删除了所有结果,只剩下一行。

您需要一个group by 子句来使其成为有效的聚合查询:

select ri.first_name, ri.last_name, ra.race_level, sum(pa.placement)
from riders ri
inner join participation pa on ri.rider_id = pa.rider_id
inner join races ra on ??
where ra.race_level = 'easy' and pa.placement > 0
group by ri.rider_id, ri.first_name, ri.last_name, ra.race_level

重要提示:

使用标准连接!隐式连接(from 子句中带有逗号)是遗留语法,不应在新代码中使用。我修改了您的代码,现在很明显您缺少race 表上的连接条件;你没有提供足够的信息让我做出有根据的猜测,所以我在查询中表示为??

表别名使查询更易于编写和阅读

group by 子句中添加riders 表的主键可确保查询不会错误地将同名的不同骑手组合在一起

【讨论】:

以上是关于MySQL:创建求和列的查询,同时从其他表中收集信息的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?

php与mysql表中如何求递归求和汇总?

根据表中其他列的值从同一表中的 2 列中选择信息

想要在 mysql 查询中求和时收到“未定义索引”通知[重复]

怎样把mysql导出表中某一列的内容用逗号隔开?

怎样把mysql导出表中某一列的内容用逗号隔开?