sql - 将显示 2 个数据总和的列连接在一起
问题描述
SELECT o.ProductID ,
p.ProductName ,
o.unitprice AS UnitCost ,
sum(o.Quantity) AS TotalUnitsSold ,
(sum(o.Quantity)*o.unitprice) AS FinalCost
FROM OrderDetails o
JOIN Products p ON o.ProductID = p.ProductID
GROUP BY o.ProductID ,
p.ProductName ,
o.unitprice
ORDER BY 1
除了最终成本之外,我还想要一列,它给出了产品的总数,简而言之,它应该是2505.60+11772.00
预期 o/p
ProductID ProductName UnitCost TotalUnitsSold FinalCost Total
1 Chai 14.40 174 2505.60 14277.60
1 Chai 18.00 654 11772.00 Null
解决方案
您可以使用窗口函数,它将为所有行提供总计:
SELECT T.ProductID
, T.ProductName
, T.UnitCost
, T.TotalUnitsSold
, T.FinalCost
, SUM(T.FinalCost) OVER(PARTITION BY ProductID) AS Total
FROM (
SELECT o.ProductID ,
p.ProductName ,
o.unitprice AS UnitCost ,
sum(o.Quantity) AS TotalUnitsSold ,
(sum(o.Quantity)*o.unitprice) AS FinalCost
FROM OrderDetails o
JOIN Products p ON o.ProductID = p.ProductID
GROUP BY o.ProductID ,
p.ProductName ,
o.unitprice
) AS T
ORDER BY 1
推荐阅读
- vue.js - Vue Composition API: Defining emits
- node.js - 有没有办法将 Google Colab ipynb 文件与 Node js 后端连接起来?
- csv - 空手道 - 在表单数据正文中上传 csv 文件
- javascript - 一个回车字符串的长度可以为零吗?
- javascript - 按下回车输入后,Vuejs在下一个按钮中生成点击事件
- c# - 如何统一询问相机的运行时权限?
- git - 阻止 Gitconfig 文件被本地 .git/config 覆盖
- jmeter - 使用 RSA-256 私钥在 jmeter 上生成 JWT 令牌
- javascript - JQuery:如何使用其 id 将现有元素添加到新元素?
- javascript - 在 Javascript if-else 语句中包含“或”的多个条件