Comment faire pour que MySQL MAX () considère NULL comme la plus petite valeur possible?

StackOverflow https://stackoverflow.com/questions/1406120

  •  05-07-2019
  •  | 
  •  

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?

Était-ce utile?

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
scroll top