SQL Server查询中的计数百分比

SQL Server查询中的计数百分比,sql,sql-server,database,Sql,Sql Server,Database,我有一个SQL查询,其中最重要的功能是返回总销售额SUM(gop.quantity)。然后我想让它显示这个数字的百分比。如果查询返回以下3行,则应在其旁边显示百分比-如下所示: 单位损失:2-百分比:20% 单位损失:4-百分比:40% 单位损失:6-百分比:60% 查询: SELECT TOP 20 p.productid, SUM(gop.quantity) AS unitsSold, SUM(gop.price * gop.quantity) AS gro

我有一个SQL查询,其中最重要的功能是返回总销售额
SUM(gop.quantity)
。然后我想让它显示这个数字的百分比。如果查询返回以下3行,则应在其旁边显示百分比-如下所示:

  • 单位损失:2-百分比:20%
  • 单位损失:4-百分比:40%
  • 单位损失:6-百分比:60%
查询:

SELECT TOP 20 
    p.productid, 
    SUM(gop.quantity) AS unitsSold, 
    SUM(gop.price * gop.quantity) AS grossSales, 
    p.productName, gop.picid, gop.picUrl 
FROM 
    product AS p 
LEFT JOIN 
    orderdetail AS gop ON gop.productid = p.productId 
LEFT JOIN 
    Orders AS hedgo ON hedgo.orderid = gop.orderid 
WHERE 
    EXISTS (SELECT * FROM orderdetail AS op 
            WHERE op.orderid = hedgo.orderid) 
GROUP BY 
    p.productid, p.productName, gop.picid, gop.picUrl 
ORDER BY 
    unitsSold DESC
如何在我的SQL查询中实现这一点?

您可以使用
sum()
来获取总数:

select top 20 p.productid
 , SUM(gop.quantity) as unitsSold
 , SUM(gop.quantity+.0) / sum(SUM(gop.quantity)) over() as Percentage
 , SUM(gop.price * gop.quantity) as grossSales
 , p.productName
 , gop.picid
 , gop.picUrl
from product as p
  left join orderdetail as gop 
    on gop.productid = p.productId
  left join Orders as hedgo 
    on hedgo.orderid = gop.orderid
where exists (
  select *
  from orderdetail as op
  where op.orderid = hedgo.orderid
  )
group by p.productid
 , p.productName
 , gop.picid
 , gop.picUrl
order by unitsSold desc
我将
+.0
添加到
和(gop.quantity)
中,这样,如果
数量
整数
,则除法操作将返回一个
十进制
,而不是
整数

您可以将
sum()
与一起使用以获取总数:

select top 20 p.productid
 , SUM(gop.quantity) as unitsSold
 , SUM(gop.quantity+.0) / sum(SUM(gop.quantity)) over() as Percentage
 , SUM(gop.price * gop.quantity) as grossSales
 , p.productName
 , gop.picid
 , gop.picUrl
from product as p
  left join orderdetail as gop 
    on gop.productid = p.productId
  left join Orders as hedgo 
    on hedgo.orderid = gop.orderid
where exists (
  select *
  from orderdetail as op
  where op.orderid = hedgo.orderid
  )
group by p.productid
 , p.productName
 , gop.picid
 , gop.picUrl
order by unitsSold desc

我将
+.0
添加到
和(gop.quantity)
中,这样,如果
数量
整数
,则除法操作将返回一个
十进制
,而不是
整数

你的百分比公式是什么?unitsSold/totalUnitsSold?是的,这是公式你的百分比公式是什么?unitsSold/totalUnitsSold?是的,这是公式