Предположим, у меня есть две таблицы. Таблица T1
нравится:
Game Player Points Assists
1 1 10 5
1 2 5 10
T2
как:
Game Player Fouls Turnovers
1 1 5 5
1 2 10 10
Я хотел бы создать представление с одной строкой на игрока и новым полем rating
, где rating
- равная взвешенная сумма Points, Assists, Fouls,Turnovers
для каждого игрока. (то есть рейтинг = .25 * Очки + .25 * Помогает + .25 * Фолы + .25 * Обороты)
Я создаю вид:
CREATE VIEW `player_view` AS (
SELECT Player,
SUM(
Points *0.25 +
Assists *0.25 +
Fouls *0.25 +
Turnovers *0.25) AS Rating)
FROM T1 INNER JOIN T2 ON
T1.Player = T2.Player
AND T1.Game = T2.Game
GROUP BY Player
Но вместо того, чтобы возвращать значение, я получаю NULL
для всех Rating
:
Player Rating
1 NULL
2 NULL
Изначально я столкнулся с
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'support_desk.mod_users_groups.group_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
Так что я отключил only_full_group_by
через SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
Итак, теперь, хотя представление возвращает набор результатов, все Ratings
равны NULL. Пожалуйста, помогите.