如何对唯一列值SQL进行排序和限制

问题描述 投票:0回答:1

如果我在 sql (bigquery googleSQL) 中运行以下查询,它将为我提供当前日期每个国家/地区的销售额列表

SELECT
    date,
    product,
    country,
    sum(total_sales) as total_sales
    FROM
    `international_sales`
    WHERE 
    date = '2024-10-19'
    AND
    total_sales > 0
    AND product in ( 'Product A', 'Product B')
日期 产品 国家 总销售额
2024-10-19 产品A 美国 22222
2024-10-19 产品B 加拿大 111111
2024-10-19 产品B 墨西哥 333333

我希望能够修改此设置,以便我只获得每种产品的前十个最高国家/地区。如果我只查询一种产品,那么就像添加一样简单

order by total_sales desc limit 10;

但由于我试图同时查询多个产品,这让事情变得更加困难。我该如何解决这个问题?

sql google-bigquery
1个回答
0
投票

正如 @Paul Maxwell 所评论的,根据您的要求,您可以包含行号计算,如下所示,

row\_number() over(partition by date, product, country order by total\_sales) as rn
然后过滤
where rn <= 10
.

将答案发布为社区 wiki,以造福于将来可能遇到此用例的社区。请随意编辑此答案以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.