Я начинаю с SQL и пытаюсь написать запрос, который в настоящее время выходит за рамки моих возможностей. Возможно, это осложняется тем фактом, что таблица, с которой я работаю, по причинам, которые я не могу контролировать или изменять, не имеет первичного ключа. Это база данных MySQL. Вот упрощенная версия таблицы, только четыре строки:Обновление значения строки в MySQL путем усреднения значений из подмножества других строк
pid year name team wOBAplus PA
147 2002 Barry Bonds MTL 0.466 276
147 2002 Barry Bonds OAK 0.495 318
147 2002 Barry Bonds NULL 594
147 2003 Barry Bonds OAK 0.456 522
212 2014 Mike Trout SEA 0.391 567
Столбца wOBAplus имеет значение для всех строк, где столбец команды не является пустым. То, что я хотел бы сделать, это добавить значения в остальных строках, используя следующую формулу:
wOBAplus_noteam = (sum(wOBAplus_team * PA_team))/PA_noteam
Таким образом, в этом случае, я хотел бы в wOBAplus, который в настоящее время NULL обновлена (0,466 * 276 + 0.495 * 318)/594. Я бы хотел, чтобы все остальные строки игнорировались.
Это что-то, что может быть достигнуто с использованием таблицы как в настоящее время структурированной? Если нет, то каковы мои альтернативы?
Заранее благодарим за любую помощь, которую вы можете предоставить.
почему только первые два значения в формуле? –
Руслан, я не уверен, что вы просите. Формула - это именно то, что нужно для получения желаемого результата. Обратите внимание, что вся эта формула дает вам ребята математическую формулу, которая должна использоваться в запросе. – jda
У вас есть только '0.466' и' 0.495' в вашем примере. Должны ли быть все ненулевые значения? –