如何使三列按目标数排序?

Posted

技术标签:

【中文标题】如何使三列按目标数排序?【英文标题】:How do I make three columns combine ordered by the number of goals? 【发布时间】:2022-01-03 10:22:30 【问题描述】:

我在统一 SQL 中的两个表时遇到了一些问题。我想得到本赛季进球更多的球员,但我做不到。

我已经以不同的方式完成了这两件事:

SELECT name, surname
FROM players
GROUP BY name, surname

如果我这样做,我会从玩家那里得到所有的名字,但是如果我在 JOIN ON 中将它与另一个混在一起,一些玩家会无缘无故地消失。

结果:

| name    | surname   |

| John    | Brown     |
| Robert  | Smith     |
| Albert  | Carpenter |
| David   | Addams    |
| Richard | McAvoy    |

然后我有每个进球的进球数,我通过 COUNT(*) 得到这个

SELECT COUNT(*) AS goals
FROM goals
JOIN players ON (players.id = goals.player_id)
GROUP BY player_id
ORDER BY goals DESC
LIMIT 5;

在这一点上,我也可以得到想要的结果,即进球得分最高的 5 个。但我不知道如何获得综合结果。

结果:

| goals |

| 152   |
| 140   |
| 102   |
| 95    |
| 91    |

我希望我的专栏是:

| Name    | Surname   | goals |

| John    | Brown     | 152   |
| Robert  | Smith     | 140   |
| Albert  | Carpenter | 102   |
| David   | Addams    | 95    |
| Richard | McAvoy    | 91    |

感谢任何帮助。 :)

【问题讨论】:

可以输入表GOALS的样本5-7条记录吗? 【参考方案1】:

SELECT name, surname, COUNT(*) AS 目标

来自目标

inner JOIN player ON (players.id = goal.player_id)

组名,姓氏

按目标 DESC 排序

限制 5 个;

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

试试这个

SELECT p.name, p.surname, g.goals
FROM goals g
INNER JOIN players p ON p.id = g.player_id
ORDER BY g.goals DESC LIMIT 5;

如果您同时显示两个表中的一些记录,那么回答起来会更容易。现在我假设你的目标表就像这个 playerid -> 不。目标

【讨论】:

以上是关于如何使三列按目标数排序?的主要内容,如果未能解决你的问题,请参考以下文章

excel分组,将A列按名称分组之后,B列再次内嵌分组,C列再次内嵌,怎么弄?很急!!!

在 csv 文件的第三列中将秒数转换为年龄

Pandas groupby 多列基础日期列按纪元周

经典三列布局

两行三列的矩阵和三行三列的矩阵相乘

Python Pandas:排序和分组,然后将第二列的两个连续行求和以获得第三列的特定值