OObbelixMedlem sedan okt. 2002257 inlägg Nu är jag här igen med mina "sql-problem" :)
Säg att tabellen ser ut så här:
period | time_min | time_sec | action_type | team_id | home_goals | away_goals
1 10 12 goal 55 1 0
1 11 22 goal 55 2 0
2 05 48 goal 58 2 1
2 06 10 goal 55 3 1
2 15 22 goal 58 3 2
3 16 55 goal 55 4 2
Går det utifrån detta att få fram följande resultat
period | team1 | team2
1 2 0
2 1 2
3 1 0
Jag skulle ju kunna göra en fråga per lag men undrar alltså om det går att lösa i en å samma.
LLarsGMedlem sedan dec. 200012 464 inlägg select period,
max(home_goals) - min(home_goals) -
case when min(home_goals) > 0 then 1 else 0 end,
max(away_goals) - case wmin(away_goals) -
case when min(away_goals) > 0 then 1 else 0 end
from t
group by period
OObbelixMedlem sedan okt. 2002257 inlägg Tackar. Men jag misstänker att det ska vara "+" istället för "-" innan case och att det ska vara "min" istället för "case wmin" , eller? ;)
Har testat denna och den verkar så långt funka som den ska
select period,
max(home_goals) - min(home_goals) +
case when min(home_goals) > 0 then 1 else 0 end,
max(away_goals) - min(away_goals) +
case when min(away_goals) > 0 then 1 else 0 end
from t
group by period
OObbelixMedlem sedan okt. 2002257 inlägg Har nu hunnit testa lite mer, och den räknar lite fel...
Har denna SQL-fråga:
select period,
max(home_goals) - min(home_goals) +
case when min(home_goals) >0 then 1 else 0 end AS t1goal,
max(away_goals) - min(away_goals) +
case when min(away_goals) >0 then 1 else 0 end AS t2goal
from game_data where game_id=53
group by period
Och kör den på denna tabell:
period | time_min | time_sec | action_type | team_id | home_goals | away_goals
1 07 08 goal 55 0 1
2 04 13 goal 58 1 1
2 10 09 goal 55 1 2
2 12 17 goal 55 1 3
3 06 10 goal 58 2 3
Och får ut detta resultatet:
period | t1goal | t2goal
1 0 1
2 1 3
3 1 1
Men vill få ut detta:
period | t1goal | t2goal
1 0 1
2 1 2
3 1 0
Vad gör jag för fel?
/red: stavfel i kolumnnamn
LLarsGMedlem sedan dec. 200012 464 inlägg select period,
max(coalesce(home_goals,0)) -
(select max(coalesce(home_goals,0))
from game_data
where game_id = 53
and period < gd.period) as t1goal,
max(coalesce(away_goals,0)) -
(select max(coalesce(away_goals,0))
from game_data
where game_id = 53
and period < gd.period) as t2goal
from game_data gd
where game_id=53
group by period
Du får problem med de perioder där det blir 0-0.
OObbelixMedlem sedan okt. 2002257 inlägg nja. den blev inte rätt heller, men ledde mig till rätt svar (tror jag i alla fall).
Gjorde såhär:
select period,
(select count(*)
from game_data
where action_type='goal'
and game_id=53
and period=gd.period
and team_id=22) as t1goal,
(select count(*)
from game_data
where action_type='goal'
and game_id=53
and period=gd.period
and team_id=21) as t2goal
from game_data gd
where game_id=53
group by period
För jag vet ju vilka lag som spelar och vet också vilka poster som är "mål".