Microsoft SQL Server - 订单的百分比

时间:2017-07-28 08:07:01

标签: sql sql-server

我在Northwind示例数据库上进行培训并完成了任务: “创建返回的查询:CompanyNameOrderIDSaleAmount(该订单的价值),该订单的百分比值,客户订单的总价值。

我做到了,一切正常,但现在我想添加其他东西: 我想添加一个字段,该字段将显示个别订单的百分比份额,并将其与所有订单的总价值相对应 - Sum(SaleAmount)

我做了类似的事情:

SELECT
  CompanyName,
  OrderID,
  SaleAmount,
  CAST(100 * SaleAmount / SUM(SaleAmount) OVER (PARTITION BY CompanyName) AS decimal(5, 2)) AS 'Percent',
  SUM(SaleAmount) OVER (PARTITION BY CompanyName) AS Total,
  (SELECT
    SUM(SaleAmount) AS Całość_Zamówienia
  FROM dbo.[Sales Totals by Amount])
  AS Suma_całkowita,
  CAST(100 * SaleAmount / SUM(SaleAmount) OVER (PARTITION BY CompanyName) AS decimal(11, 2)) AS 'TEST'
FROM dbo.[Sales Totals by Amount]
GROUP BY CompanyName,
         OrderID,
         SaleAmount

但它显示了愚蠢的事情,你能帮帮我吗? :)

1 个答案:

答案 0 :(得分:0)

试试这个:

 SELECT CompanyName, OrderID, SaleAmount,
        CAST(100 * SaleAmount / SUM(SaleAmount) OVER(PARTITION BY CompanyName) as decimal(5,2)) as 'Percent',
        SUM(SaleAmount) OVER(PARTITION BY CompanyName) as Total,
        (SELECT Sum(SaleAmount) as Całość_Zamówienia FROM dbo.[Sales Totals by Amount]) as Suma_całkowita
        ,CAST(100 * SUM(SaleAmount) OVER(PARTITION BY CompanyName)/ (select sum(SaleAmount) from dbo.[Sales Totals by Amount])  as decimal(11,2)) as 'TEST'
        FROM dbo.[Sales Totals by Amount] 
        GROUP BY CompanyName, OrderID, SaleAmount