找出时间段内GDP最高的前N个国家

Find the top N countries with highest GDP during tome period

我有一个包含以下列的 table:country_id、country_name、大洲、支出、日期 (yyyymmdd)、人口。 我想找到时间段 (20170101 - 20170107) 内每天支出最高的前 n 个(例如 3 个)国家。

SELECT DISTINCT country_name, expenditure 
FROM  expend_per_day
GROUP BY date
HAVING date BETWEEN "20170101" AND "20170107"
LIMIT 3;

但我没有得到我想要的,它显示了前 3 行。 我希望每天看到支出最高的 3 个国家和支出本身。 你有什么想法? 谢谢

WITH cte AS ( SELECT *, 
                     ROW_NUMBER() OVER (PARTITION BY `date` ORDER BY expenditure DESC) rn
              FROM expend_per_day
          --  WHERE `date` BETWEEN '20170101' AND '20170107' 
            )
SELECT *
FROM cte
WHERE rn <= 3

如果与第 3 行的日期相同且支出相同的行不止一行,则将从这些重复行中选择不确定的行。