Microsoft SQL Server-订单百分比

Microsoft SQL Server-订单百分比,sql,sql-server,Sql,Sql Server,我正在培训Northwind样本数据库,并有任务要做: 创建返回以下内容的查询:CompanyName、OrderID、SaleAmount(该订单的价值)、该订单的百分比值、客户订单的总值 我做到了,一切正常,但现在我想补充一点: 我想添加一个字段,显示单个订单占所有订单总价值的百分比份额-总和(销售额) 我是这样做的: SELECT CompanyName, OrderID, SaleAmount, CAST(100 * SaleAmount / SUM(SaleAmount

我正在培训Northwind样本数据库,并有任务要做: 创建返回以下内容的查询:
CompanyName
OrderID
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
但是它显示了愚蠢的事情,你能帮我吗?:)

试试这个:

 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
试试这个:

 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

当前的输出是什么?您期望得到什么?我希望获得单个订单的百分比份额,例如订单np.10524,销售金额3192,65,所有订单的总金额291026,66。SaleAmum/TotalAmount*100%
SUM(SaleAmum)OVER()
返回与您的
Sumałkowita
仍然无法完成:(应类似于您现有的
百分比
计算:
转换(100*SaleAmount/SUM(SaleAmount)OVER()为十进制(5,2))
当前的输出是什么?您期望得到什么?我希望获得单个订单的百分比份额,例如订单np.10524,销售金额3192,65,所有订单的总金额291026,66。SaleAmum/TotalAmount*100%
SUM(SaleAmum)OVER()
返回与您的
Sumałkowita
仍然无法完成:(应类似于您现有的
百分比
计算:
CAST(100*SaleAmount/SUM(SaleAmount)OVER()为十进制(5,2))