Terve.
Miten onnistuisi haku kannasta seuraavasti:
TAULU
ID Aika1 Aika2 Koko pid 1 4.0 6.0 2500 1 2 2.0 5.0 4600 1 3 1.0 9.0 2000 2
Nyt yritän laskea keskiarvoa (tavaraa / s).
Eli lasketaan keskiarvo (tavaraa/s) niille, joiden pid=1
Eli jos pid on 1 laskettaisiin seuraavasti:
(2500 / (4.0+6.0)) + (4600 / (2.0 + 5.0)) = 907,14 / s
Mutta kun kokeilen tehdä sitä MySQL:ssä, niin saan ihan 'väärän' tuloksen:
SELECT (koko) / (SUM(aika1) + SUM(aika2)) AS 'keskiarvo' FROM TAULU where pid=1;
keskiarvo = 147.05 / s
Missä mennään vikaan ?
SELECT SUM(koko / (aika1 + aika2)) AS 'summa' FROM TAULU where pid=1;
Eli kokonaisaika on aika1:n ja aika2:n summa?
Tuossa alkuperäisessä ajattelussasi on jo ajatusvirhe.
ID:llä 1 tavaraa/s on 2500/10 eli 250
ID:llä 2 tavaraa/s on 4600/7 eli 657,14
Joten keskiarvoksi ei mitenkään voi tulla 907,14 - eihän?
Tämä pitää vielä jakaa rivien määrällä, joka tässä tapauksessa on 2, jolloin haluttu tulos on 453,57
Haetaankohan tällaista:
SELECT pid, AVG(Koko / (Aika1 + Aika2)) AS ka FROM TAULU GROUP BY pid;
Jos halutaan vain jollain pid:n arvolla, lisätään WHERE-ehto.
Aihe on jo aika vanha, joten et voi enää vastata siihen.