среднее из производных атрибутов в новой таблице - PullRequest
0 голосов
/ 14 октября 2019

Как рассчитать среднее значение позиции человека (в данном случае игрока) x & y при создании новой таблицы и добавлении указанного среднего к новому столбцу.

CREATE TABLE PlayerStatistics  AS SELECT
    PLAY_Name
FROM
    player;

ALTER TABLE
    PlayerStatistics ADD AveragePosition DECIMAL(6, 5)
SELECT
    AVG(
         Player1(T1) - X,
         Player1(T1) - Y
    ))
FROM
    tracksdataview

Конечный результатКод - это новая таблица с одним столбцом имени / идентификатора игрока и другим столбцом, который имеет среднее значение позиций x и y в каждом ряду.

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Я подозреваю, что новая таблица может быть не лучшим решением вашей проблемы. Рассмотрим случай, когда позиция X или Y меняется со временем. Тогда это не будет отражено в ваших «производных» атрибутах в отдельной таблице.

Я бы предложил создать представление, которое всегда будет «смотреть» на исходную таблицу:

CREATE VIEW PlayerStatistics  AS 
SELECT *, ax-X devX, ay-Y devY
FROM tracksdataview t
INNER JOIN (SELECT playerId, AVG(X) ax, AVG(Y) ay FROM tracksdataview GROUP BY playerId) ta
ON ta.playerId=t.playerId

Поскольку я не был уверен в типе «среднего», который вы хотите, я вычислил среднее значение по всем позициям конкретного игрока, а затем создал два столбца, показывающих отклонения x и y игрока от их средних позиций.

(Я также сделал предположение, что ID-столбцы (playerId) существуют ...)

0 голосов
/ 14 октября 2019

В зависимости от вашей СУБД, вы можете комбинировать свои вычисления и оператор CREATE TABLE.

CREATE TABLE PlayerStatistics AS
SELECT 
  PLAY_Name, 
  CAST((Player_X + Player_Y) / 2 AS DECIMAL(6,5)) AS AveragePosition
FROM player p
LEFT JOIN tracksdataview tdv ON p.play_name = tdv.play_name -- Get track data (if any)
;

Вам может понадобиться CAST значения x, y как FLOAT перед выполнениемразделение. Попробуйте и дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...