mysql 5.7 – selects the top 5 accounts in each region in one month per business figure

My data is in the Sales table

ACCT_ID | REGION | DATE_FILTER | SALES
1001 | TEXAS | 2018-01 | ten
1002 | DENV | 2018-01 | 30
1004 | WDC | 2018-01 | 50
1001 | TEXAS | 2018-02 | 500
1002 | DENV | 2018-02 | 300
1004 | WDC | 2018-02 | 120

I want to know the ranking of each account in a district by month based on sales, my output will look like

ACCT_ID | REGION | DATE_FILTER | SALES | Rank
1001 | TEXAS | 2018-01 | 10 | 3
1002 | DENV | 2018-01 | 30 | 2
1004 | WDC | 2018-01 | 50 | 1
1001 | TEXAS | 2018-02 | 500 | 1
1002 | DENV | 2018-02 | 300 | 2
1004 | WDC | 2018-02 | 120 | 3

I'm using the Mysql version 5.7, I've tried it below

TO SELECT
ACCT_ID, REGION, SALES, DATE_FILTER, n RANK
OF
(SELECT @prev: = & # 39;, @n: = 0) init
JOIN
(SELECT @ n: = if (DATE_FILTER! = @Prev_rpt_mnth and REGION! = @Prev_reg, 1, @n + 1) AS n, / * HERE I USE TWO COLUMNS TO GROUP BY * /
@prev_rpt_mnth: = DATE_FILTER,
@prev_reg: = REGION
ACCT_ID, REGION, SALES, DATE_FILTER, UNITS
OF SALE
ORDERED BY
DATE_FILTER, ASC REGION,
UNITS DESC
LIMIT 999999
) X
O n <= 5
ORDER BY DATE_FILTER, REGION, n;

I receive duplicates and the rankings are not properly based on sales. Where am I wrong and is there another effective way?