I just put my comments in an answer just to better show the outputs:
Here is the code:
library(dplyr)
library(ggplot2)
df %>% group_by(CarID) %>%
summarise(min = min(Mileage),
max = max(Mileage))
df %>% group_by(CarID) %>% mutate(rate = Mileage/lag(Mileage, n = 1, default = NA)) # if < 1 then the previous value was higher.
df %>% group_by(CarID) %>% mutate(rate = Mileage - lag(Mileage, n = 1, default = NA)) # if < 0 then the previous value was higher.
ggplot(data = df, aes(x = CarID, y = Mileage)) +
geom_boxplot()
Some outputs you can work with:

Using dplyr to remove case when n < n+1 CAUTION you might want to remove outliers before!
> df %>%
+ group_by(CarID) %>%
+ mutate(rate = Mileage - lag(Mileage, n = 1, default = NA)) %>%
+ filter(rate > 0)
# A tibble: 12 x 4
# Groups: CarID [2]
CarID FuelTransactionDate Mileage rate
<chr> <chr> <int> <int>
1 AAA555 30.01.2019 7800 2740
2 AAA555 14.02.2019 9100 1300
3 AAA555 24.02.2019 9900 800
4 AAA555 07.04.2019 101110 91210
5 AAA555 15.05.2019 13000 500
6 AAA555 09.06.2019 13422 422
7 BBB788 04.06.2018 15200 200
8 BBB788 19.06.2018 16150 950
9 BBB788 27.08.2018 17500 17400
10 BBB788 10.09.2018 17999 499
11 BBB788 13.10.2018 18200 201
12 BBB788 02.11.2018 18555 355
The data:
df <- structure(list(CarID = c("AAA555", "AAA555", "AAA555", "AAA555",
"AAA555", "AAA555", "AAA555", "AAA555", "BBB788", "BBB788", "BBB788",
"BBB788", "BBB788", "BBB788", "BBB788", "BBB788"), FuelTransactionDate = c("05.01.2019",
"30.01.2019", "14.02.2019", "24.02.2019", "07.04.2019", "12.04.2019",
"15.05.2019", "09.06.2019", "15.05.2018", "04.06.2018", "19.06.2018",
"16.07.2018", "27.08.2018", "10.09.2018", "13.10.2018", "02.11.2018"
), Mileage = c(5060L, 7800L, 9100L, 9900L, 101110L, 12500L, 13000L,
13422L, 15000L, 15200L, 16150L, 100L, 17500L, 17999L, 18200L,
18555L)), class = "data.frame", row.names = c(NA, -16L))