首页 > 解决方案 > SQL Rank 和 SUM

问题描述

我在使用 SQL 查询时遇到了一些问题:

目前我有 2 张桌子。第一个表格列出了供应商和国家/地区的销售额,例如,还有更多行,但这只是要点。

Country id     Sale
US      1      100
UK      2      1000
US      3      150 
UK      2      200

在第二个表中,我有链接到供应商名称的 ID,例如

id name
1  john
2  david 
3  tom 

我需要获得每个国家/地区的顶级供应商,但销售额的总和。输出应该类似于这个国家/地区 id 名称 sum_sales

你能帮忙吗。目前我只能分组和求和,无法获得每个国家的顶尖人物。谢谢你!

我在 big_query sql 上运行它

标签: sqlgoogle-bigquery

解决方案


在 BigQuery 中,您可以将窗口函数与聚合一起使用:

select id, name, country, sum_sales
from (select s.id, v.name, s.country, sum(sales) as sum_sales
             row_number() over (partition by s.country order by sum(sales) desc) as seqnum
      from sales s join
           vendors v
           on v.id = v.id
      group by s.id, v.name, s.country
     ) sv
where seqnum = 1;

推荐阅读