Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: MySQL-haku

mrkebab [12.03.2008 12:44:16]

#

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 ?

kayttaja-2499 [12.03.2008 20:12:29]

#

SELECT SUM(koko / (aika1 + aika2)) AS 'summa' FROM TAULU where pid=1;

Temsku [13.03.2008 11:19:50]

#

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

Chiman [13.03.2008 11:27:16]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta