sql - 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 上运行它
解决方案
在 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;
推荐阅读
- sql - 比较两个表中的主要/别名组
- google-apps-script - Google Apps Script Web Apps 中出现新的“currentURL is not defined”错误
- python - Python Turtle 中的状态清除
- mql4 - Mql4 布尔逻辑问题
- angular - Angular 防护 canActivate 方法不适用于 Observable
- python - django 可编辑的 ListView
- postgresql - PostgreSQL id 列未定义
- f# - 使用柯里化会导致 F# 的性能下降吗?
- c# - 如何将控制台应用程序中的光标设置到末尾?
- docker - 如何构建一个 Ubuntu 容器并安装多个程序