簡體   English   中英

sql中的sum語句

[英]sum statement in sql

=======================================
Flight   SeatType   Price   GrandTotal
=======================================
F36712   Business   $480
         Economy    $375
         First      $450       ?

F12314   Business   $100
         Economy    $200
         First      $300       ?

我試過這個SQL:

$sql = "SELECT FlightID,SeatType, sum(SeatPrice)Total
                  FROM seat 
                  WHERE SeatAvailable = 'Yes'
                  GROUP BY FlightID,SeatType, SeatPrice";

我能否知道如何計算總計(每次航班的業務,經濟和頭等艙的總和)?

您的查詢版本在group by SeatPrice中具有SeatPrice 這意味着您將獲得每個座位價格的單獨一行。 我假設您想獲取每個SeatType組的SeatType

SELECT FlightID,SeatType, sum(SeatPrice) as Total
FROM seat 
WHERE SeatAvailable = 'Yes'
GROUP BY FlightID, SeatType with rollup;

但是,這並未將總計放在單獨的列中。 再次,大多數版本的SQL支持窗口都可以執行此操作:

SELECT FlightID,SeatType, sum(SeatPrice) as Total,
       sum(sum(SeatPrice)) over (partition by FlightId)
FROM seat 
WHERE SeatAvailable = 'Yes'
GROUP BY FlightID, SeatType;

編輯:

MySQL不支持窗口功能。 您可以對聯接和聚合執行相同的操作:

SELECT s.FlightID, s.SeatType, sum(s.SeatPrice) as Total, f.GrandTotal
FROM seat s join
     (select FlightId, sum(SeatPrice) as GrandTotal
      from seat
      where SeatAvailable = 'Yes'
      group by FlightId
     ) f
     on s.FlightId = f.FlightId
WHERE s.SeatAvailable = 'Yes'
GROUP BY s.FlightID, s.SeatType;

既然如此,您需要將GrandTotal設為您無法在GROUP BY中使用SeatType的每個航班的所有商務,經濟艙和頭等艙座位的總和。

$sql = "SELECT FlightID, SUM(SeatPrice) AS Total
        FROM seat 
        WHERE SeatAvailable = 'Yes'
        GROUP BY FlightID";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM