Ik ben nu al een tijdje bezig om een query in elkaar te zetten die, naar ik dacht, iets heel simpels moet doen: het gemiddelde berekenen van de 10 rijen uit een table.
Maar, volgens mij kan wat ik wil niet, want welke combinatie van AVG, SUM en COUNT ik ook probeer er komt niet uit wat ik wil.
Tabel:
Stel dat ik de data van StatisticsZoneID = 9 wil zien dan doe ik:
en komt er dit uit
Ik dacht dit:
Dit dan:
Dus: kan het wel wat ik wil? Of zit ik in de verkeerde hoek en moet ik toch met SUM's en COUNT(*)'s gaan klooien? Ik zie het even niet meer, na 1.5 uur gepruts.
PS: Ik kan het natuurlijk wel in PHP gaan doen, maar het lijkt me dat dit toch wel mogelijk moet zijn met MySQL.
Maar, volgens mij kan wat ik wil niet, want welke combinatie van AVG, SUM en COUNT ik ook probeer er komt niet uit wat ik wil.
Tabel:
code:
Niets bijzonders, het is een tabel AdServer die voor de publicatie van mijn banners op mijn websites zorgt, en dit is dus de tabel die het aantal impressions en click bijhoudt.1
2
3
4
5
| StatisticsID int(12) StatisticsDate date StatisticsZoneID int(9) StatisticsZoneViews int(9) StatisticsZoneClicks int(9) |
Stel dat ik de data van StatisticsZoneID = 9 wil zien dan doe ik:
MySQL:
1
2
3
4
| SELECT * FROM `statisticszones` WHERE `StatisticsZoneID` =9 LIMIT 0 , 30 |
en komt er dit uit
code:
Hiep hoi, allemaal leuk en aardig. Maar wat moet ik nou doen als ik bijvoorbeeld het gemiddelde van de laatste 5 rijen wil hebben door middel van een query?1
2
3
4
5
6
7
8
9
10
11
12
13
| StatisticsID, StatisticsDate, StatisticsZoneID, StatisticsZoneViews, StatisticsZoneClicks 31 2006-09-14 9 65 0 42 2006-09-15 9 9707 0 48 2006-09-16 9 746 0 65 2006-09-17 9 524 0 77 2006-09-18 9 356 0 89 2006-09-19 9 234 0 100 2006-09-20 9 257 0 112 2006-09-21 9 161 0 124 2006-09-22 9 193 0 136 2006-09-23 9 325 0 148 2006-09-24 9 202 0 160 2006-09-25 9 71 0 |
Ik dacht dit:
MySQL:
Maar dan krijg ik gewoon de laatste 5 rijen terug met een gemiddelde van 1 rij en dus gewoon de waarde.1
2
3
4
5
6
7
8
9
10
11
12
| SELECT DAY( `StatisticsDate` ) AS DAY , AVG(`StatisticsZoneViews`) FROM `statisticszones` WHERE `StatisticsZoneID` = 9 GROUP BY Day DESC ORDER BY `StatisticsID` LIMIT 0 , 5 |
Dit dan:
MySQL:
Dat levert tenminste wel 1 rij op, maar dat is het gemiddelde van alle rijen en niet van de laatste 5.1
2
3
4
5
6
7
8
9
10
11
12
| SELECT DAY( `StatisticsDate` ) AS Day , AVG(`StatisticsZoneViews`) FROM `statisticszones` WHERE `StatisticsZoneID` = 9 GROUP BY `StatisticsZoneID` DESC ORDER BY `StatisticsID` LIMIT 0, 5 |
Dus: kan het wel wat ik wil? Of zit ik in de verkeerde hoek en moet ik toch met SUM's en COUNT(*)'s gaan klooien? Ik zie het even niet meer, na 1.5 uur gepruts.
PS: Ik kan het natuurlijk wel in PHP gaan doen, maar het lijkt me dat dit toch wel mogelijk moet zijn met MySQL.
the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.