我在使用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上运行
dense_rank()
与聚合一起使用:
select yr, Country, id, name, total_sales
from (select extract(year from s.date) as yr,
s.Country, s.id, v.name, sum(s.sales) as total_sales,
dense_rank() over (partition by s.date, s.country order by sum(s.sales) desc) as seq
from sales s inner join
vendors v
on v.id = v.id
group by s.date, s.Country, s.id, v.name
) t
where seq <= 2;
编辑:对于特定年份格式使用 FORMAT_DATETIME
FORMAT_DATETIME("%Y", DATETIME "2020-03-19")
通过这种方式,您将获得每个国家的销售量更高的供应商。
注意:这将显示两个或多个总销售额相同的供应商。如果您只想要它们中的一个,请使用row_number()
代替dense_rank()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句