我有一个有 4 列的表:产品、公司、收入、单位
为此,我希望在一列中使用不同的产品名称,max、min、avg、std dev 用于收入,该产品的单位是单独的列,而为该产品产生最大收入的公司名称在另一列中。接下来,我想要该收入的百分比(该产品的总收入中)。
我希望表中的每一个产品都有这个。关于如何做的任何建议?
我能够获得 max、min、avg、std dev 和 product,但无法获得与该产品的最大收入相对应的公司名称。
我有一个有 4 列的表:产品、公司、收入、单位
为此,我希望在一列中使用不同的产品名称,max、min、avg、std dev 用于收入,该产品的单位是单独的列,而为该产品产生最大收入的公司名称在另一列中。接下来,我想要该收入的百分比(该产品的总收入中)。
我希望表中的每一个产品都有这个。关于如何做的任何建议?
我能够获得 max、min、avg、std dev 和 product,但无法获得与该产品的最大收入相对应的公司名称。
对于与最大收入相对应的公司,您可以在您的选择语句中执行类似的操作。
select company from table where revenue =
(select max(revenue) from table where products = currentProduct)
您可以使用排名功能:
WITH CTE AS
(
SELECT products, company, revenue, units,
MaxRevenue = MAX(revenue) OVER (PARTITION BY products),
MinRevenue = MIN(revenue) OVER (PARTITION BY products),
AvgRevenue = AVG(revenue) OVER (PARTITION BY products),
STDEV_Revenue = STDEV(revenue) OVER (PARTITION BY products),
MaxUnits = MAX(units) OVER (PARTITION BY products),
MinUnits = MIN(units) OVER (PARTITION BY products),
AvgUnits = AVG(units) OVER (PARTITION BY products),
STDEV_Units = STDEV(units) OVER (PARTITION BY products),
Percent_Revenue = Max(Revenue)OVER (PARTITION BY products)/SUM(Revenue) OVER (PARTITION BY products),
ProductNum = ROW_NUMBER()OVER(PARTITION BY products ORDER BY products)
FROM dbo.TableName
)
SELECT * FROM CTE
WHERE ProductNum = 1