Подтвердить что ты не робот

Как я могу сделать запрос MySQL SUM возвращать ноль вместо нуля, если нет записей?

Вот мой запрос:

SELECT SUM(rating) AS this_week 
FROM table_name 
WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)

Что в основном учитывает рейтинг элемента за последнюю неделю (604800 - это количество секунд в 1 неделю).

Проблема заключается в том, что, когда в таблице нет строк, this_week будет возвращен как NULL. Я хочу, чтобы запрос возвращал 0, если в таблице нет строк. Как это сделать?

4b9b3361

Ответ 1

Это должно сделать трюк:

SELECT COALESCE(SUM(rating),0) AS this_week FROM table_name 
  WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)

COALESCE - это функция, которая вернет первое значение, отличное от NULL, из списка.

Ответ 2

Вы не можете использовать ISNULL(SUM(rating), 0)?