gpt4 book ai didi

sql-server - 返回值在 SQL 中子类别的百分比

转载 作者:行者123 更新时间:2023-12-04 05:59:06 24 4
gpt4 key购买 nike

我有一个查询:(使用一个非常简单的例子)

SELECT
ItemCategory,
ItemID,
Sales
FROM
MyTable
WHERE
CustomerID = 1

哪个返回
ItemCategory | ItemID | Sales
A 0 75.00
A 1 50.00
A 2 0.00
B 3 25.00
B 4 25.00
C 5 20.00
C 6 30.00
C 7 10.00
C 8 0.00
C 9 50.00

如何修改此查询,以便我收到按 ItemCategory 分组的每个项目的销售额百分比?

也就是说,我希望返回:
ItemCategory | ItemID | Sales  | PercentageOfCategory
A 0 75.00 60%
A 1 50.00 40%
A 2 0.00 0%
B 3 25.00 50%
B 4 25.00 50%
C 5 20.00 20%
C 6 30.00 30%
C 7 10.00 10%
C 8 0.00 0%
C 9 50.00 50%

我试图让这个例子尽可能简单,实际的查询非常复杂,但我想同样的逻辑仍然适用。

编辑:我相信服务器是 sql server 2008

最佳答案

假设 CTE 使用 SQL Server 2005+ :

WITH cteCategoryTotals AS (
SELECT ItemCategory, SUM(Sales) AS TotalSales
FROM MyTable
WHERE CustomerID = 1
GROUP BY ItemCategory)
SELECT m.ItemCategory, m.ItemId, m.Sales, (m.Sales/c.TotalSales)*100.0 AS PercentageOfCategory
FROM MyTable m
INNER JOIN cteCategoryTotals
ON m.ItemCategory= c.ItemCategory
WHERE m.CustomerID = 1

关于sql-server - 返回值在 SQL 中子类别的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9135014/

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