gpt4 book ai didi

mysql - 如何在 SELECT 中没有大量子查询的情况下获得总销售额的百分比

转载 作者:行者123 更新时间:2023-11-29 03:32:24 24 4
gpt4 key购买 nike

我面临着计算生产量列总数的方法的问题,所以我可以用它来计算(用户销售额/用户总销售额)百分比

SELECT * FROM Sales

ID Item Amount
5 IS1 10.00
5 IS2 2.00
3 IS1 10.00
2 IS3 7.00
9 IS5 6.00

Example 35.00

DESIRED OUTPUT

ID Amount Percentage
5 12.00 34.28571%
3 10.00 28.57142%
2 7.00 20.00000%
9 6.00 17.14285%

Example 35.00 100.0000%

SELECT ID, SUM(Amount) AS Amount
FROM Sales
GROUP BY ID

我在堆栈和其他论坛上看到过各种示例,其中人们使用额外的选择来计算总金额列本身

SELECT ID, SUM(Amount) AS Amount,(SELECT SUM(Amount) FROM Sales) AS Total, Amount/(SELECT SUM(Amount) FROM Sales)*100 AS Percentage 
FROM Sales
GROUP BY ID

但是当我的 select 查询很大时我该怎么办,你是否仍然将它放在 select 查询中或者是否有更好的方法可以做到这一点。

SELECT a.ID, SUM(a.Amount) AS Amount, @rank:=@rank + 1 AS rank
FROM Sales a
INNER JOIN (SELECT @rank:=0) r
WHERE a.Item='IS1'
AND a.tdate='2015-01-20'
GROUP BY a.ID
ORDER BY Amount

原始查询实际上比这更长,因为它还从其他表中提取描述和值。

本质上,我正在做的事情的原始代码是转到 Sales 表,按当天、按产品、按产品 sub_id、按交易 ID 提取所有用户销售数据。然后根据特定交易 ID 对当天售出最多产品的人进行排名。

当然这段代码会变得很大,所以我不确定在 SELECT 查询中再次添加整个代码来计算总数是否正确?

有没有办法,不用再查询就可以算出总金额?

最佳答案

这将适用于 MSSQL,不确定 MySQL

Select distinct ID, SUM(AMOUNT) OVER (PARTITION BY ID) Amount, SUM(AMOUNT) OVER (PARTITION BY ID) / SUM(AMOUNT) OVER (PARTITION BY 1) * 100 Percentage
from Sales
order by ID

如上所示,它会为您提供所需的输出。

关于mysql - 如何在 SELECT 中没有大量子查询的情况下获得总销售额的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28672165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com