简体   繁体   English

别名表中的 MySQL 总和

[英]MySQL Sum from Alias Table

I have this query...我有这个查询...

CREATE VIEW CustOrderItems AS
SELECT CustFirstName, CustLastName, OrderNumber, OrderDate, ShipDate, 
QuantityOrdered * QuotedPrice AS ItemTotal
FROM Customers NATURAL JOIN Orders NATURAL JOIN Order_Details;

After grouping the orders like this...像这样对订单进行分组后...

SELECT CustFirstName, CustLastName, OrderNumber, OrderDate, ShipDate, 
QuantityOrdered * QuotedPrice AS ItemTotal
FROM Customers NATURAL JOIN Orders NATURAL JOIN Order_Details
GROUP BY OrderNumber
ORDER BY OrderNumber ASC;

I know need to calculate the sum of all the ItemTotal's added together?我知道需要计算所有 ItemTotal 的总和吗?

Any help is much appreciated!任何帮助深表感谢!

As has been mentioned in a comment already, you get sums in SQL with SUM , which should not be much of a surprise.正如评论中已经提到的,您可以使用SUM在 SQL 中获得总和,这不足为奇。 It seems strange you know about GROUP BY , but not about SUM .您知道GROUP BY而不是SUM ,这似乎很奇怪。

At this point I'd like to recommend to always aggregate before joining, not afterwards.在这一点上,我想建议总是在加入之前聚合,而不是之后。 You want orders with their customer information and their total price.您需要包含客户信息和总价的订单。 So select from orders, join with customers, join with total prices.所以从订单中选择,加入客户,加入总价。 Once you want aggregates from different tables, this approach will save you some trouble.一旦您想要来自不同表的聚合,这种方法将为您省去一些麻烦。

SELECT 
  c.CustFirstName,
  c.CustLastName,
  o.OrderNumber,
  o.OrderDate,
  o.ShipDate, 
  od.OrderTotal
FROM Orders o
JOIN Customers c ON c.CustomerNumber = o.CustomerNumber
JOIN 
(
  SELECT
    OrderNumber,
    SUM(QuantityOrdered * QuotedPrice) AS OrderTotal
  FROM Order_Details
  GROUP BY OrderNumber
) od ON od.OrderNumber = o.OrderNumber
ORDER BY o.OrderNumber ASC;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM