Ik ben van plan om wat gegevens uit een tabel te verzamelen en daar wat statistieken uit te halen. Dus het wordt wat optellen en gemiddelden. Het gaat om de volgende gegevens:
BRes = beste resultaat van 2006
LRes = laatste resultaat van 2006
AGem = gemiddelde afstand 2006
A = totale afstand van 2006
ATot = totale afstand

In ieder record worden de volgende benodigde gegevens opgeslagen:
Resultaat
Afstand 1
Afstand 2
Afstand 3

Nu kan de waarde van de gegevens ook 0 zijn en dan moet die niet meegeteld worden voor een eventuele deling. Voor een optelling is het natuurlijk niet erg.

Nu heb ik gezien dat je veel kan met een MySQL query. Zo lijkt me SUM een oplossing voor ATot. Maar bij de gegevens die alleen betrekking hebben over 2006 moet je daar dus op filteren. Kan dat ook in SQL of moet ik dat erbuiten doen?

Heeft iemand tips en eventueel een opzetje? Hoe kan ik dit het beste aanpakken?
Voor wat maak je dit?

Wil je een grafiekje met foto

of

Voor om te vergelijken welk dingen hoeveel afstanden heeft gelegd?
Nee, die gegevens wil ik gewoon tonen. Als info zeg maar.
Je hebt drie velden met een afstand er in? Het is meestal geen goed idee om drie velden met dezelfde soort info te hebben namelijk.

Maar goed, bijvoorbeeld voor gemiddelde afstand, hoe wil je het hebben? Het gemiddelde van afstand 1, 2 en 3? Of het gemiddelde van alle afstanden 1?
het gemiddelde van alle afstanden. Dus niet alleen van 1 bv.
Beste resultaat:

SELECT MAX(resultaat) AS beste_resultaat
WHERE YEAR(datumtijd) = 2006
FROM tabelnaam

Laatste resultaat van 2006
SELECT resultaat
FROM tabelnaam
WHERE YEAR(datumtijd) = 2006
ORDER BY datumtijd DESC
LIMIT 1

Gemiddelde afstand 2006
SELECT AVG(afstand1 + afstand2 + afstand3) AS gemiddelde_afstand
FROM tabelnaam
WHERE YEAR(datumtijd) = 2006

totale afstand 2006
SELECT SUM(afstand1 + afstand2 + afstand3) AS totale_afstand
FROM tabelnaam
WHERE YEAR(datumtijd) = 2006

totale afstand
SELECT SUM(afstand1 + afstand2 + afstand3) AS totale_afstand
FROM tabelnaam
Oke, het werkt allemaal zolang ik de regel WHERE YEAR(datumtijd) = 2006 maar weglaat.

Mijn datumtijd veld is van het datetime formaat. Moet ik niet alleen 2006 invullen maar compleet dus 2006-01-01 00:00:00??
Oh, dan werkt YEAR alleen op DATE velden en niet op DATETIME velden. In dat geval kun je dit proberen:

WHERE DATE_FORMAT(datumtijd, '%Y') = 2006
Nee dat hoeft niet, aangezien de YEAR() functie toegepast op een datumtijd veld alleen het jaar als resultaat geeft.

Dus het resultaat YEAR('2006-12-12 11:12:13') is '2006'.

edit: werkt blijkbaar dus alleen op date velden...
edit2: volgens de handleiding werkt YEAR() wel alleen date velden, maar net getest en ook gewoon op datetime formaten.
Hmm lijkt hem ook niet te zijn...

Zo ziet het er nu uit:

$BResquery = "SELECT MAX(resultaat) AS BRes WHERE DATE_FORMAT(post_date, '%Y') = 2006 FROM news";

Reageren