找出时间段内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 行的日期相同且支出相同的行不止一行,则将从这些重复行中选择不确定的行。
我有一个包含以下列的 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 行的日期相同且支出相同的行不止一行,则将从这些重复行中选择不确定的行。