Oracle:使用 avg 函数选择多列
Oracle : Selecting multiple columns with avg function
我试图用球员名字逐行显示每个球员的平均值
我查看了整个 oracle 文档和其他人在堆栈溢出时提出的先前问题。我只遇到过如何 select 按记录 ID 分组的平均值以及如何使用子查询 select 取平均值
举个例子,
我发现的是通过
获得每一行的平均值
select round(avg(g1+g2+g3+g4)) as "Average Score" from ch_user group by playerid;
请注意,我没有在图片中显示我的 PlayerID。
如果我要 select player 和 avg ,它会给我 ORA-01427。
我试过了
select player, (select round(avg(g1+g2+g3+g4)) from ch_user group by playerid) as "Average Score" from ch_user;
但是提示错误ORA-01427。
单行子查询returns多行
提前致谢
已更新
我已经找到了问题的解决方案,并且我能够根据@Boneist 的回答将其实施到我的查询中。
但是,我发现查询很长,我是否可以简化查询?
我的查询是
select first_name || ' ' || last_name as Player,game_1 as G1 , game_2 as g2 ,
game_3 as g3, game_4 as G4,total_score as "Total Tournament Score",
round(avg(game_1+game_2+game_3+game_4)) as "Average Score" from ch_user
group by playerid, first_name,last_name,game_1,game_2,game_3,game_4,total_score;
我想你想多了......你需要做的就是在你的第一个查询中将 player
添加到 select 列表中,然后将 player
添加到组中:
select player,
round(avg(g1 + g2 + g3 + g4)) as "Average Score"
from ch_user
group by playerid, player;
我想你想按 player_id 对数据进行分组,但要显示球员姓名和平均值。检查这是否有帮助。
select player_name,round(avg(g1+g2+g3+g4)) "Average"
from ch_user
group by player_id,player_name;
我试图用球员名字逐行显示每个球员的平均值 我查看了整个 oracle 文档和其他人在堆栈溢出时提出的先前问题。我只遇到过如何 select 按记录 ID 分组的平均值以及如何使用子查询 select 取平均值
举个例子, 我发现的是通过
获得每一行的平均值select round(avg(g1+g2+g3+g4)) as "Average Score" from ch_user group by playerid;
请注意,我没有在图片中显示我的 PlayerID。
如果我要 select player 和 avg ,它会给我 ORA-01427。
我试过了
select player, (select round(avg(g1+g2+g3+g4)) from ch_user group by playerid) as "Average Score" from ch_user;
但是提示错误ORA-01427。
单行子查询returns多行
提前致谢
已更新
我已经找到了问题的解决方案,并且我能够根据@Boneist 的回答将其实施到我的查询中。
但是,我发现查询很长,我是否可以简化查询?
我的查询是
select first_name || ' ' || last_name as Player,game_1 as G1 , game_2 as g2 ,
game_3 as g3, game_4 as G4,total_score as "Total Tournament Score",
round(avg(game_1+game_2+game_3+game_4)) as "Average Score" from ch_user
group by playerid, first_name,last_name,game_1,game_2,game_3,game_4,total_score;
我想你想多了......你需要做的就是在你的第一个查询中将 player
添加到 select 列表中,然后将 player
添加到组中:
select player,
round(avg(g1 + g2 + g3 + g4)) as "Average Score"
from ch_user
group by playerid, player;
我想你想按 player_id 对数据进行分组,但要显示球员姓名和平均值。检查这是否有帮助。
select player_name,round(avg(g1+g2+g3+g4)) "Average"
from ch_user
group by player_id,player_name;