-1

我有一个有 4 列的表:产品、公司、收入、单位

为此,我希望在一列中使用不同的产品名称,max、min、avg、std dev 用于收入,该产品的单位是单独的列,而为该产品产生最大收入的公司名称在另一列中。接下来,我想要该收入的百分比(该产品的总收入中)。

我希望表中的每一个产品都有这个。关于如何做的任何建议?

我能够获得 max、min、avg、std dev 和 product,但无法获得与该产品的最大收入相对应的公司名称。

4

2 回答 2

1

对于与最大收入相对应的公司,您可以在您的选择语句中执行类似的操作。

select company from table where revenue =
(select max(revenue) from table where products = currentProduct)
于 2013-09-26T13:47:30.277 回答
0

您可以使用排名功能

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
于 2013-09-26T13:52:12.767 回答