Средняя разница между значениями SQL - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь найти разницу между значениями, используя SQL, где второе значение всегда больше предыдущего значения.

Пример данных:

Car_ID | Trip_ID | Mileage
1       1         10,000
1       2         11,000
1       3         11,500
2       1         5,000
2       2         7,000
2       3         8,000

Ожидаемый расчет:

Car_ID: 1
(Trip 2 - Trip 1) = 1,000 
(Trip 3 - Trip 2) = 500
Average Difference: 750

Car_ID: 2
(Trip 2 - Trip 1) = 2,000 
(Trip 3 - Trip 2) = 1,000
Average Difference: 1,500

Ожидаемый результат:

Car_ID | Average_Difference
1        750 
2        1,500

1 Ответ

3 голосов
/ 10 марта 2020

Вы можете использовать агрегацию:

select car_id,
       (max(mileage) - min(mileage)) / nullif(count(*) - 1, 0)
from t
group by car_id;

То есть среднее значение, как вы определили, является максимумом минус минимум, деленный на единицу меньше, чем количество поездок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...