Mysql 向表中添加一列值
我有一个游戏中球员的数据集,包括他们的属性、球队、联盟以及他们来自的国家。我想做一个表格,列出每个不同的球队,显示他们的整体评分,他们的n名最佳球员,以及这些球员的平均水平 我可以通过以下方式获得这些值:Mysql 向表中添加一列值,mysql,mysql-workbench,Mysql,Mysql Workbench,我有一个游戏中球员的数据集,包括他们的属性、球队、联盟以及他们来自的国家。我想做一个表格,列出每个不同的球队,显示他们的整体评分,他们的n名最佳球员,以及这些球员的平均水平 我可以通过以下方式获得这些值: select distinct Team, nth_value(Current, 2) #get nth largest value from column over (partition by Team) as player2 #best nth player
select distinct Team, nth_value(Current, 2) #get nth largest value
from column over (partition by Team) as player2 #best nth player by team
from master
order by Current DESC; #ordered by best player
这是:
select Team, round(avg(Current),2) as 'Average' #average player on team
from master
group by Team;
我为球队和他们的平均水平做了一个表格,但我找不到一种方法来添加第n名最佳球员的列。我发现的最接近的方法是向表中添加一行信息
从本质上讲,该表应该类似于:
Team | Average_Rating | Best_Player | Second_Best | ... | Nth_Best | Avg_20
Name | 93.67 | 142 | 120 | ... | 72 | 96.25
n\u值(当前,2)
中的第二个值可以在请求之间更改,因为我假设team
列在team列中的相等值上没有主键或唯一键含义,您无法预测在那里处理的记录。。我们需要显示创建表格主控
的输出。。。另外selectteam,round(avg(Current),2)
不是有效的查询,将非聚合列与聚合函数混合使用没有意义avg()。。。我建议您查看以提供示例数据和预期结果,因为这些SQL代码包含非逻辑错误。我不知道它是否适用于您的情况,但如果您可以在查询后进行一些后处理,您可以尝试类似于SELECT Team,GROUP_CONCAT(当前顺序按当前描述)由于每个团队都有来自主组的分数
,然后将分数拆分(例如,在PHP中使用explode()
)@Pepper您的建议也会遇到团队列中相等值的问题。您无法预测哪些记录值位于逗号分隔值内的ntn位置。@RaymondNijland来自主组的示例: