mysql max ()를 가장 작은 값으로 고려하는 방법은 무엇입니까?
문제
다음과 같이 보이는 쿼리가 있습니다.
SELECT weekEnd, MAX(timeMonday)
FROM timesheet
GROUP BY weekEnd
TimemonDay의 유효한 값은 NULL, -1, 0, 1-24입니다. 현재 Max ()는 해당 값의 선호도를 순서 NULL, -1, 0, 1-24에 배치하지만 실제로 원하는 것은 -1, NULL, 0, 1-24이므로 NULL이 더 높은 것으로 간주됩니다. -1보다. Max가 이것을 할 수 없다는 것을 알고 있습니다. 그래서 그것을 달성하는 가장 쉬운 방법은 무엇입니까?
해결책
주말까지 주말, Max (Coalesce (Timemonday,-. 5))를 선택하십시오.
그런 다음 -.5를 NULL로 변환하십시오
다른 팁
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
최대를 계산할 때 NULL을 -0.5로 교체 한 다음 NULL로 되돌립니다.
(MS SQL Server 구문)
SELECT weekEnd, MAX(COALESCE(timeMonday, '-0.1'))
FROM timesheet
GROUP BY weekEnd
편집 : 이것을 테스트하지 않았습니다
SELECT weekEnd, REPLACE(MAX(COALESCE(timeMonday, '-0.1')), '-0.1', 'null')
FROM timesheet
GROUP BY weekEnd
제휴하지 않습니다 StackOverflow