[MySQL] GROUP BY LIMIT 1, inclusief NULL

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
SQL:
1
2
3
4
5
SELECT SUM(`amount`)
FROM `table`
GROUP BY `timestamp`
ORDER BY `timestamp` DESC
LIMIT 1


Middels bovenstaande pseudo-code haal ik de som op van de hoogste timestamp die in de tabel staat. Ik probeer echter voor elkaar te krijgen dat deze hoogste timestamp inclusief de rows is waarbij timestamp IS NULL.

Ik zit al uren te kloten en ook Googlen levert me bar weinig op. De richting waarin ik zit te denken is als volgt:

SQL:
1
2
3
4
5
SELECT SUM(`amount`)
FROM `table`
GROUP BY IFNULL(`timestamp`, MAX(`timestamp`))
ORDER BY `timestamp` DESC
LIMIT 1


Helaas echter werkt dit niet, omdat de MAX de maximum waarde uit z'n eigen group pakt, in plaats van de overall MAX.

Acties:
  • 0 Henk 'm!

  • Big4SMK
  • Registratie: September 2001
  • Laatst online: 18-09 13:33
Misschien kan je het richting zoiets zoeken:
SQL:
1
2
3
4
SELECT SUM(`amount`)
FROM `table`
WHERE `timestamp` = max(`timestamp`) 
OR `timestamp` is NULL

[ Voor 3% gewijzigd door Big4SMK op 07-03-2010 17:53 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Big4SMK schreef op zondag 07 maart 2010 @ 17:53:
Misschien kan je het richting zoiets zoeken:
SQL:
1
2
3
4
SELECT SUM(`amount`)
FROM `table`
WHERE `timestamp` = max(`timestamp`) 
OR `timestamp` is NULL
MAX() mag niet in de where clause helaas :(

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 18:43

BCC

Is het een bug dat de timestamps soms leeg zijn of een feature? Zoiets is namelijk ook funest voor indexen en range queries. Kun je de timestamps niet vullen of anders op de MIN of MAX van Mysql zetten?

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Verwijderd schreef op zondag 07 maart 2010 @ 17:57:
[...]

MAX() mag niet in de where clause helaas :(
WHERE TimeStamp = (SELECT MAX(TimeStamp) FROM Table) OR TIMESTAMP IS NULL :?

Oops! Google Chrome could not find www.rijks%20museum.nl


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
P_de_B schreef op zondag 07 maart 2010 @ 18:02:
[...]

WHERE TimeStamp = (SELECT MAX(TimeStamp) FROM Table) OR TIMESTAMP IS NULL :?
Arghhhh....

Dank je... Soms heb je van die momenten........ :( 8)7 dom dom dom.... dat ik daar uren naar heb zitten turen....
Pagina: 1