Вчера я задал аналогичный вопрос, на который был дан ответ правильно. SQL requiring self join and ranking Хотя этот вопрос подобен, я не могу адаптировать ответ в соответствии.SQL-запрос - возможно, требует аналитических функций
У меня есть таблица результатов футбольных:
CREATE TABLE matches(
season NUMBER(4),
matchDate DATE,
homeTeam VARCHAR2(25),
awayTeam VARCHAR2(25),
homeGoals NUMBER(2),
awayGoals NUMBER(2),
totalGoals NUMBER(3));
заявления INSERT можно найти здесь: https://gist.github.com/2941229
Я желаю, чтобы вычислить значение для totalGoals следующим образом. Это общее количество забитых голов (homeGoals + awayGoals) в 5 последних матчах, которые играла нынешняя команда хозяев, добавила к числу голов, забитых в 5 последних матчах, которые сыграла текущая команда гостей перед текущим матчем. Он не должен включать цели из текущего матча.
Разница со вчерашним вопросом заключалась в том, что он учитывал только предыдущие матчи, где хозяева играли дома, а гости играли в гостях. С этим вопросом не имеет значения, родилась ли домашняя команда дома или вне дома. Они просто должны были быть одной из команд в этом предыдущем матче.
Как и прежде, следует использовать только совпадения от текущего сезона, и если какая-либо из команд не сыграла 5 матчей в сезоне, то totalGoals должны оставаться NULL.
Я могу сделать это с помощью PL/SQL, но я бы предпочел SQL-запрос. Вчерашнее решение было примерно в тысячу раз быстрее, чем мой PL/SQL.
Благодаря Tams
Как вы думаете, что это может сработать? Вы можете найти более качественное ответное сообщение и что люди готовы помочь вам, если вы сможете продемонстрировать, что вы [попробовали что-то для себя] (http://mattgemmell.com/2008/12/08/what -ты пробовал/). – Ben
@Ben - До вчерашнего дня я никогда не слышал об аналитических функциях. Я предполагал, что для этого потребуется какая-то форма ранжирования и самостоятельного присоединения. Я был совершенно неправ. Я часто считаю, что лучше не руководить программистом по определенному маршруту, так как это может привести к неверному пути, что они не спустились бы, если бы я ничего не сказал. Я смог адаптировать вчерашнее решение для множества других запросов, но из-за того, как он написан, по просьбе, мне трудно понять, как я могу адаптировать его для этой цели. – Tams
Не все, Бен. – Tams