Come rendere MySQL MAX () considerare NULL il valore più piccolo possibile?
Domanda
Ho una query che assomiglia un po 'a questa:
SELECT weekEnd, MAX(timeMonday)
FROM timesheet
GROUP BY weekEnd
I valori validi per timeMonday sono: null, -1, 0, 1-24. Al momento, MAX () posiziona la preferenza di quei valori nell'ordine null, -1, 0, 1-24, tuttavia ciò che voglio effettivamente è -1, null, 0, 1-24, in modo che null sia considerato più alto di -1. So che MAX non può farlo, quindi qual è il modo più semplice per raggiungerlo?
Soluzione
SELEZIONA weekEnd, MAX (coalesce (timeMonday, -. 5)) DA scheda attività Raggruppa per settimana
Quindi riconvertire -.5 in null
Altri suggerimenti
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
sostituendo NULL di -0.5 quando si calcola MAX, quindi si ripristina su NULL.
(sintassi di MS SQL Server)
SELECT weekEnd, MAX(COALESCE(timeMonday, '-0.1'))
FROM timesheet
GROUP BY weekEnd
Modifica: non l'ho testato
SELECT weekEnd, REPLACE(MAX(COALESCE(timeMonday, '-0.1')), '-0.1', 'null')
FROM timesheet
GROUP BY weekEnd
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow