SAMENVATTING:
Hoe selecteer ik de eerste en laatste waarde op een dag.
UITLEG:
Ik zou graag uit een tabel met de prijzen willen uitlezen. Het gaat dan om prijzen van aandelen en die schommelen graag. Nu wil ik graag van elke dag de maximale, minimale, gemiddelde en open en sluit waarde willen hebben.
De maximale, minimale en gemiddelde prijs zijn niet ingewikkeld. Dat doe ik als volgt:
Nu wil ik daar ook graag de eerste en laatste prijs van de dag hebben. Nu heb ik het volgende geprobeerd. Dit is voor de maximale waarde maar minimaal zou dan op de zelfde manier moeten:
Nu krijg ik een fout van mysql die ik niet helemaal kan thuis brengen:
#1111 - Invalid use of group function
Ik dit dan ook niet als oplossing. Maar is het mogelijk zowel de eerste als laatste waarde van de dag ook mee te krijgen. Probleem is alleen wel dat er geen vast moment op de dag is dat de eerste en laatste prijs binnen komen. Van de oudere gegevens staan de id's ook niet op volgorde. 2010 komt voor het jaar 2000 maar na 2001.
Hoe selecteer ik de eerste en laatste waarde op een dag.
UITLEG:
Ik zou graag uit een tabel met de prijzen willen uitlezen. Het gaat dan om prijzen van aandelen en die schommelen graag. Nu wil ik graag van elke dag de maximale, minimale, gemiddelde en open en sluit waarde willen hebben.
De maximale, minimale en gemiddelde prijs zijn niet ingewikkeld. Dat doe ik als volgt:
SQL:
1
2
3
4
| SELECT MAX( prijs ) , MIN( prijs ) , AVG( prijs ) , moment FROM `prijshistorie` WHERE comid =1 GROUP BY year( moment ) , month( moment ) , day( moment ) |
Nu wil ik daar ook graag de eerste en laatste prijs van de dag hebben. Nu heb ik het volgende geprobeerd. Dit is voor de maximale waarde maar minimaal zou dan op de zelfde manier moeten:
SQL:
1
2
3
4
| SELECT MAX( prijs ) , MIN( prijs ) , AVG( prijs ) , (SELECT prijs FROM prijshistorie WHERE moment = MAX(moment)) AS last, moment FROM `prijshistorie` WHERE comid =1 GROUP BY year( moment ) , month( moment ) , day( moment ) |
Nu krijg ik een fout van mysql die ik niet helemaal kan thuis brengen:
#1111 - Invalid use of group function
Ik dit dan ook niet als oplossing. Maar is het mogelijk zowel de eerste als laatste waarde van de dag ook mee te krijgen. Probleem is alleen wel dat er geen vast moment op de dag is dat de eerste en laatste prijs binnen komen. Van de oudere gegevens staan de id's ook niet op volgorde. 2010 komt voor het jaar 2000 maar na 2001.