Oracle: выбор нескольких столбцов с функцией avg - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь отображать средние значения каждого игрока построчно с именем игрока, которое я просматривал в документах оракула и в предыдущем вопросе, заданном другими людьми о переполнении стека.Я только сталкивался с тем, как выбрать группу среднего значения по их идентификатору записи и как выбрать среднее значение, используя подзапрос

. Например, я обнаружил, что получаю среднее значение по каждой строке на

select round(avg(g1+g2+g3+g4)) as "Average Score" from ch_user group by playerid; 

Обратите внимание, что я не отображал мой PlayerID, показанный на картинке.enter image description here

Если я выберу игрока и 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.
однострочный подзапрос возвращает более одной строки.

Заранее спасибо

ОБНОВЛЕНО

Я уже нашел решение дляпроблема, и я могу реализовать его в своем запросе на основе ответа @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;

enter image description here

Ответы [ 2 ]

1 голос
/ 01 июля 2019

Я думаю, что вы хотите сгруппировать данные по player_id, но отобразить имя игрока и среднее значение. Проверьте, помогает ли это.

select player_name,round(avg(g1+g2+g3+g4)) "Average"
from ch_user
group by player_id,player_name;
1 голос
/ 01 июля 2019

Я думаю, что вы обдумали это ... все, что вам нужно сделать, это добавить player в список выбора в вашем первом запросе и добавить player в группу следующим образом:

select player,
       round(avg(g1 + g2 + g3 + g4)) as "Average Score"
from   ch_user
group by playerid, player;
...