如何解决计算每个城市某一类别的支付百分比
我们需要计算每个城市每个类别的支付百分比 我正在尝试这样做
select SUM(ShipQty),SUM(ShipQty)*100/(select SUM(ShipQty) from InvoiceLineitemes
inner join Invoice on InvoiceLineitemes.InvoiceNumber=Invoice.InvoiceNumber
inner join Customers on Invoice.soldToCustomer=Customers.CustomerNumber group by City),Category,city from InvoiceLineitemes
inner join Inventory on InvoiceLineitemes.ItemNumber=Inventory.ItemNumber
inner join Invoice on InvoiceLineitemes.InvoiceNumber=Invoice.InvoiceNumber
inner join Customers on Invoice.soldToCustomer=Customers.CustomerNumber
group by Category,City
但我面临这个错误
msg 512,级别 16,状态 1,第 1 行 子查询返回了 1 个以上的值。当子查询跟随 =、!=、、>= 或当子查询用作表达式时,这是不允许的。
解决方法
想必,您想要一个部分与整体的比率。最好使用窗口函数来解决这个问题:
select Category,city,sum(ShipQty),sum(ShipQty) * 100.0 / sum(sum(shipqty)) over (partition by city)
from InvoiceLineitemes ili join
Inventory i
on ili.ItemNumber = i.ItemNumber join
Invoice inv
on ili.InvoiceNumber = inv.InvoiceNumber join
Customers c
on inv.SoldToCustomer = c.CustomerNumber
group by Category,City;
请注意,表别名还使查询更易于编写和阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。