Как заставить MySQL MAX () считать NULL наименьшим возможным значением?

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

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть запрос, который выглядит примерно так:

SELECT weekEnd, MAX(timeMonday)
FROM timesheet
GROUP BY weekEnd

Допустимые значения для timeMonday: null, -1, 0, 1-24. В настоящий момент MAX () размещает предпочтения этих значений в порядке нуля, -1, 0, 1-24, однако, что я на самом деле хочу, это -1, нуля, 0, 1-24, так что значение нуля считается выше чем -1. Я знаю, что MAX не может этого сделать, так каков самый простой способ добиться этого?

Это было полезно?

Решение

  

ВЫБЕРИТЕ WeekEnd, MAX (объединение (timeMonday, -. 5))   ОТ расписания   GROUP BY weekEnd

Затем преобразуйте -.5 обратно в ноль

Другие советы

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 при расчете MAX, а затем вернуть его в 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top