Wie die MySQL-MAX () betrachtet NULL den kleinstmöglichen Wert machen?
Frage
Ich habe eine Abfrage, die ein bisschen wie folgt aussieht:
SELECT weekEnd, MAX(timeMonday)
FROM timesheet
GROUP BY weekEnd
Die gültigen Werte für timeMonday sind: null, -1, 0, 1-24. Im Moment MAX () legt die Präferenz dieser Werte in der Größenordnung null, -1, 0, 1-24, aber was ich will eigentlich ist -1, null, 0, 1-24, so dass null höher angesehen wird als -1. Ich weiß, MAX kann nicht das tun, so was ist der einfachste Weg, es zu erreichen?
Lösung
SELECT WEEKEND, MAX (verschmelzen (timeMonday, -. 5)) VON Zeiterfassungs GROUP BY WOCHENENDE
Dann wandeln -.5 zurück zu null
Andere Tipps
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
ersetzt NULL um -0,5 wenn MAX Berechnung dann Zurücksetzen es NULL zu.
(MS SQL Server-Syntax)
SELECT weekEnd, MAX(COALESCE(timeMonday, '-0.1'))
FROM timesheet
GROUP BY weekEnd
Edit: habe nicht getestet
SELECT weekEnd, REPLACE(MAX(COALESCE(timeMonday, '-0.1')), '-0.1', 'null')
FROM timesheet
GROUP BY weekEnd
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow