#sql #sql-server #distinct
#sql #sql-сервер #различное
Вопрос:
Я помогаю, я ищу сумму поля данных, а затем хочу разделить ее на количество разных дат в этом поле.
SUM(CASE WHEN dateResolved IS NOT NULL
THEN 1 ELSE 0
END) / DISTINCT(dateResolved) AvgPerDay
Если в dateResolved есть 32 даты с 5 разными датами, я хочу, чтобы он возвращал 6.4.
Комментарии:
1. Вам нужно количество отличное, ваш distinct просто вернет фактические даты
Ответ №1:
По умолчанию выполняется целочисленное деление, которое вам нужно :
SUM(CASE WHEN dateResolved IS NOT NULL
THEN 1 ELSE 0
END) * 1.0 / COUNT(DISTINCT dateResolved) AvgPerDay
Однако simply count
также будет работать :
COUNT(dateResolved) * 1.0 / COUNT(DISTINCT dateResolved) AvgPerDay
COUNT(dateResolved)
будет игнорировать null
значения.
Ответ №2:
Я бы сделал это как:
SUM(CASE WHEN dateResolved IS NOT NULL
THEN 1.0 ELSE 0
END) / COUNT(DISTINCT dateResolved) as AvgPerDay
Но это проще сформулировано как:
COUNT(dateResolved) * 1.0 / COUNT(DISTINCT dateResolved) as AvgPerDay