SQL排名和总和

用户名

我在使用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上运行

Yogesh Sharma

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章