Запрос SQL СУММИРУЕТСЯ и делится на определенное количество дат

#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