login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Gegevens groeperen en max uithalen? (Opgelost)

Offline Slaper - 13/07/2008 17:15
Avatar van SlaperNieuw lid Hallo
Ik heb een tabel met volgende velden id(autoincrement) tijdd(datetime) en geg(float).
bv.
1 2006-03-13 23:59:59 14.06
100 2007-03-12 23:59:59 16.06
210 2008-03-14 23:59:59 15.06
211 2008-03-15 23:59:59 9.77
212 2008-03-16 23:59:59 7.05
213 2008-03-17 23:59:59 8.61
214 2008-03-18 23:59:59 9.41
215 2008-03-19 23:59:59 15.24
etc.

nu wil ik van iedere maand de max waarde weten, dit zonder rekening te houden met jaar of dag. dus hier in het voorbeeld zal dit voor maart:
2007-03-12 23:59:59 16.06 en dus niet 2008-03-14 23:59:59 15.06 of 2006-03-13 23:59:59 14.06

Volgende sql instructie gebruik ik .

SELECT *
FROM test
where id=(SELECT maxx
FROM (SELECT max(id) as maxx,max(geg)
FROM test
Group BY DATE_FORMAT(tijdd,'%m')))

dit werk niet

wel kan ik de max uithalen maar geen datum als volgt.
SELECT max(id) as maxx,max(geg)
FROM test
Group BY DATE_FORMAT(tijdd,'%m')

hier krijg ik de max waarde(geg) alsook de id. Nu wil ik de id gebruiken voor de datum te zoeken.

Graag oplossing. Thanks

7 antwoorden

Gesponsorde links
Offline jc2 - 13/07/2008 17:19
Avatar van jc2 PHP interesse Hoi Slaper,

Het is beter leesbaar als je om je sql-code '[ code=sql ]'-tags plaatst. Verder snap ik nog niet goed wat je bedoelt.
Kun je het nog wat verduidelijken?
Offline Slaper - 13/07/2008 17:28
Avatar van Slaper Nieuw lid kleine uitleg, waarom deze gegevens. Ik heb zonnepanelen en iedere dag worden deze gegevens gesaved in de database. (daarom tijdd en geg)

ik wil weten op welke dag het max was per maand over verschillende jaren.
bv:
in Januari was 12/01/2007 de max waarde
in februari was 14/02/2008 het max
enz.... tot december.

Offline Vincjenzo - 13/07/2008 20:41 (laatste wijziging 13/07/2008 20:41)
Avatar van Vincjenzo Nieuw lid Tja. Dit is niet zo netjes en het kan vast beter Maar volgens mij gaat ie wel werken.

Plaatscode: 12125
Offline phpenguin - 14/07/2008 01:08 (laatste wijziging 14/07/2008 01:16)
Avatar van phpenguin Nieuw lid ietsje korter dan vincjenzo:

  1. SELECT tijdd, maand, geg
  2. FROM test
  3. JOIN (
  4. SELECT month( tijdd ) AS maand, max( geg ) AS maxgeg
  5. FROM test
  6. GROUP BY maand
  7. ) AS maandelijks
  8. ON (
  9. month( test.tijdd ) = maandelijks.maand
  10. AND maandelijks.maxgeg=test.geg
  11. )


misschien een probleempje, hoewel het misschien een interessant neven effect is.

Stel dat bv januari het maximimum heeft gehad op 2 verschillende data, dan worden beiden teruggegeven

detail: voor het voorbeeld gebruik hier enkel het tijdstip, maandnummer en de geg waarde, maar pas gewoon de select maand, geg aan met de gegevens die jezelf wil 

vb data:
1, 14/7/2008 23:59:59, 14.06 <--
100, 12/3/2007 23:59:59, 16.06
210, 14/3/2008 23:59:59, 17.06 <-- max in maart
211, 15/3/2008 23:59:59, 9.77
212, 16/3/2008 23:59:59, 7.05
213, 17/3/2008 22:59:59, 8.61
214, 18/3/2008 23:59:59, 17.06 <-- max in maart

eindresultaat
14/7/2008 23:59:59, 7, 14.06
14/3/2008 23:59:59, 3, 17.06
18/3/2008 23:59:59, 3, 17.06

Offline Vincjenzo - 14/07/2008 10:01
Avatar van Vincjenzo Nieuw lid Respect 
Offline phpenguin - 14/07/2008 11:21
Avatar van phpenguin Nieuw lid same to you, kzou het niet zien zitten om dat al in te tikken 

btw, die van jou getest en hetzelfde resultaat, 
Offline Slaper - 14/07/2008 19:23
Avatar van Slaper Nieuw lid beste aan allen

ben een happy man,

bedankt Vincjenzo en phpenguin 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.191s