У меня есть следующая таблица, которая показывает мне каждый раз, когда автомобиль наполняется танком. Она возвращает дату, автомобиль идентификатор, пробег это было в то время и литры заполнены:Макс и Мин группы на 2 колонки
| Date | Vehicle_ID | Mileage | Liters |
| 2016-10-20 | 234 | 123456 | 100 |
| 2016-10-20 | 345 | 458456 | 215 |
| 2016-10-20 | 323 | 756456 | 265 |
| 2016-10-25 | 234 | 123800 | 32 |
| 2016-10-26 | 345 | 459000 | 15 |
| 2016-10-26 | 323 | 756796 | 46 |
Идея заключается в том, чтобы вычислить среднее Потребляемый за месяц (я не могу сделать это днем, потому что не каждый автомобиль заполняет резервуар каждый день).
Чтобы получить это, я попытался получить максимальную (пробег) -мин (пробег)/сумму (литров) по месяцам. Но это будет работать только на 1 конкретный автомобиль и на 1 конкретный месяц.
Если я попытаюсь использовать 1 конкретный автомобиль и несколько месяцев, максимальные и минимальные значения не вернутся должным образом. Если я добавлю все автомобили, что еще хуже, так как он будет принимать максимальные и минимальные значения, как если бы каждый автомобиль был таким же.
select convert(char(7), Date, 127) as year_month,
sum("Liters tanked")/(max("Mileage")-min("Mileage"))*100 as Litres_per_100KM
from Tanking
where convert(varchar(10),"Date",23) >= DATEADD(mm, -5, GETDATE())
group by convert(char(7), Date, 127)
Это не сработает, так как оно будет принимать максимальные и минимальные значения от всех автомобилей.
«Рабочий процесс» будет следующим: - За каждый месяц получите максимальный и минимальный пробег для каждого автомобиля. Рассчитайте max-min, чтобы получить пробег, который он проехал в этом месяце. Суммируйте пробег для каждого автомобиля, чтобы получить общий пробег, управляемый всеми автомобилями. Суммируйте литры. Разделите общее количество литров на общий пробег.
Как я могу получить результат:
| YearMonth | Average |
| 2016-06 | 30 |
| 2016-07 | 32 |
| 2016-08 | 46 |
| 2016-09 | 34 |
«Я не могу сделать это днем, потому что не каждый автомобиль заливок танк каждый день ». Не является ли ежедневное потребление только ежемесячным потреблением, деленным примерно на 30? – Strawberry
Привет клубника. Нет. Если бы я хотел «средний день», это сработало бы так. Но каждый день я имел в виду «день 1 - среднее значение X», «День 2 - среднее значение Y» и т. Д. –
Выход включает строки для '2016-09',' 2016-08', '2016-07' и '2016-06'. Но образцы данных не содержат записей за эти месяцы. Можете ли вы обновить, чтобы мы работали против. –