首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL一个查询中的不同分组依据级别

SQL一个查询中的不同分组依据级别
EN

Stack Overflow用户
提问于 2019-07-25 18:57:15
回答 3查看 65关注 0票数 1

我尝试获取一个维度按另一个维度分组的百分比。所以说我有

代码语言:javascript
运行
复制
table1 =
country, product, sale
US, TV, 50
US, TV, 150
MEX, TV, 50
US, PC, 800

我想在国家/地区按产品分组,并获得:

代码语言:javascript
运行
复制
Select... =
Country, Product, Country_Total, Product_Per_Country, Percentage
US, TV, 1000, 200, 20%
US, PC, 1000, 800, 80%
MEX, TV, 50, 50, 100%

我只想从table1中选择一次,因为这是一个扩展的select。你能帮上忙吗?

致以问候,彼得

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-25 18:58:47

使用窗口函数:

代码语言:javascript
运行
复制
select country, product, sum(sale) as sales,
       sum(sale) / sum(sum(sale)) over (partition by country) as country_ratio
from table1 t1
group by country, product;
票数 1
EN

Stack Overflow用户

发布于 2019-07-25 19:01:02

尝试像下面这样使用窗口函数

代码语言:javascript
运行
复制
 select country, product,sum(sum(sale)) over( partition by country) Country_Total,
sum(sum(sale))over( partition by country,product) Product_Per_Country,
 (sum(sum(sale))over( partition by country,product) /sum(sum(sale)) over( partition by country))*100 as Percentage
from cte group by country, product


COUNTRY     PRODUCT     COUNTRY_TOTAL   PRODUCT_PER_COUNTRY     PERCENTAGE
MEX         TV            50            50                      100
US          PC           1000           800                     80
US          TV           1000           200                     20

online demo

票数 2
EN

Stack Overflow用户

发布于 2019-07-25 19:00:32

查询类似于

代码语言:javascript
运行
复制
SELECT country, product, sum(sale) as sales,
sum(sale) / sum(sum(sale)) over (partition by country) as country_ratio
FROM table1
GROUP BY country, product;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57200349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档