-1

製品、会社、収益、単位の 4 つの列を持つテーブルがあります。

このうち、1 つの列に個別の製品名、収益の最大、最小、平均、標準偏差、その製品の単位を別の列に、その製品の最大収益を生み出した会社名を別の列に表示したいと考えています。次に、その収益の割合 (その製品の総収益のうち) が必要です。

テーブル内のすべての製品にこれが必要です。それを行う方法について何か提案はありますか?

max、min、avg、std dev、および製品を取得できますが、その製品の最大収益に対応するその会社の名前を取得できません。

4

2 に答える 2

1

最大収益に対応する会社の場合、select ステートメントで次のようなことができます。

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 に答える