Ik heb hier een tabel vol met gegevens over coördinaten van gebruikers en auto's. In de database is dit als volgt opgeslagen:
Nu wil ik per auto de gemiddelde coördinaten (x, y) hebben zonder het meenemen van de historische data. Als je kijkt naar id 1 en 2 dan zie je dat persoon 1 met auto 1 eerst op 345, 235 heeft gestaan en later op 124, 141. Nu wil ik bij het berekenen van de gemiddelde coördinaten alleen gegevens meenemen die het jongst zijn per auto per persoon. Dus als ik het gemiddelde wil weten van auto 1 dan bereken ik het gemiddelde van id 2 en 6. id 1 wordt niet meegerekend omdat gebruiker 1 met auto 1 op een later tijdstip ergens anders is geweest.
Dit heb ik tot dusver (niet veel):
Dit geeft een gemiddelde van de coördinaten per car_id. Dus voor auto 1 de id's 1, 2 en 6.
Nu zou ik graag van jullie willen weten of dit überhaupt mogelijk is en als het kan mij een zet de goeie richting in kan geven.
Even voor de volledigheid.
code:
1
2
3
4
5
6
7
8
| id user_id car_id x y timestamp 1 1 1 345 235 1198921256 2 1 1 124 141 1198932522 3 1 2 358 111 1198982352 4 2 3 347 566 1199017371 5 2 3 266 951 1199029128 6 3 1 673 352 1199042834 7 3 2 284 361 1199056104 |
Nu wil ik per auto de gemiddelde coördinaten (x, y) hebben zonder het meenemen van de historische data. Als je kijkt naar id 1 en 2 dan zie je dat persoon 1 met auto 1 eerst op 345, 235 heeft gestaan en later op 124, 141. Nu wil ik bij het berekenen van de gemiddelde coördinaten alleen gegevens meenemen die het jongst zijn per auto per persoon. Dus als ik het gemiddelde wil weten van auto 1 dan bereken ik het gemiddelde van id 2 en 6. id 1 wordt niet meegerekend omdat gebruiker 1 met auto 1 op een later tijdstip ergens anders is geweest.
Dit heb ik tot dusver (niet veel):
SQL:
1
2
3
4
5
6
7
8
9
10
| SELECT t.car_id, AVG(t.x) AS avgx, AVG(t.y) AS avgy FROM table t GROUP BY t.car_id |
Dit geeft een gemiddelde van de coördinaten per car_id. Dus voor auto 1 de id's 1, 2 en 6.
Nu zou ik graag van jullie willen weten of dit überhaupt mogelijk is en als het kan mij een zet de goeie richting in kan geven.
Even voor de volledigheid.
- Ik maak gebruik van Microsoft SQL Server 2005 Express.
- Als workaround gebruik ik nu een 2de tabel waar alleen de laatste gegevens worden opgeslagen, niet netjes al die redundante data. (De database is/wordt veel groter dan deze 7 records
)
- Ik wil het gelieve in de database oplossen i.p.v in de code.