Comment faire pour que MySQL MAX () considère NULL comme la plus petite valeur possible?
Question
J'ai une requête qui ressemble un peu à ceci:
SELECT weekEnd, MAX(timeMonday)
FROM timesheet
GROUP BY weekEnd
Les valeurs valides pour timeMonday sont: null, -1, 0, 1-24. Pour le moment, MAX () place la préférence de ces valeurs dans l'ordre null, -1, 0, 1-24, mais ce que je veux réellement, c'est -1, null, 0, 1-24, de sorte que null est considéré comme supérieur. que -1. Je sais que MAX ne peut pas le faire, alors quel est le moyen le plus simple de le réaliser?
La solution
SELECT weekEnd, MAX (coalesce (timeMonday, -. 5)) FROM feuille de temps GROUPE PAR SEMAINEFIN
Ensuite, reconvertissez -.5 en null
Autres conseils
SELECT weekEnd, CASE WHEN maxTimeMonday = -0.5 THEN NULL ELSE maxTimeMonday END maxTimeMonday
FROM (
SELECT weekEnd, MAX(CASE WHEN timeMonday IS NULL THEN -0.5 ELSE timeMonday END) maxTimeMonday
FROM timesheet
GROUP BY weekEnd) T
remplacer NULL par -0,5 lors du calcul de MAX, puis le rétablir à NULL.
(syntaxe MS SQL Server)
SELECT weekEnd, MAX(COALESCE(timeMonday, '-0.1'))
FROM timesheet
GROUP BY weekEnd
Modifier: n'a pas testé cette
SELECT weekEnd, REPLACE(MAX(COALESCE(timeMonday, '-0.1')), '-0.1', 'null')
FROM timesheet
GROUP BY weekEnd
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow