来自多个表的 Sum 和 Count 的 SQL 查询

ymc*_*ole 1 sql sum count multiple-tables

我有以下两个表:

1. BList

  • 预订编号
  • 成人号
  • 孩子号
  • 预定日期

2. 手柄

  • 预订编号
  • 售票状态
  • 最终售价
  • 最终网
  • 职员

我想要做的就是让distinct StaffSum of (SellingPrice)Sum of (NettPrice)Profit (Sum of sellingPrice)- Sum of (NettPrice)),大同没有它(AdultNo + ChildNo),也算BookingID为担保的无

WHERE BookingDate >= fromDate AND BookingDate <= toDate 
    AND TicketingStatus='CP'
Run Code Online (Sandbox Code Playgroud)

看起来像这样的东西(底部的总数无关紧要,因为我会将它们写入 csv 格式,我将在那里处理总数)但我需要先弄清楚如何获取查询。

我要制作的清单

这是我可以从第二个表BHandle 中获得的查询

SELECT Staff, SUM(FinalSellingPrice) AS gross, SUM(FinalNett) AS cost
FROM BHandle
WHERE ticketingstatus ='CP'
GROUP BY Staff
Run Code Online (Sandbox Code Playgroud)

这是我对第一个表BList 的查询

SELECT (adultno+childno) AS pax 
fFROM om BList
WHERE bookingdate >='01-mar-2013 00:00'
AND bookingdate <= '15-may-2013 23:59'
Run Code Online (Sandbox Code Playgroud)

如何将这两个查询组合在一起?

Gar*_*eth 5

像这样(假设所有列都不为空):

select Staff,
    sum(FinalSellingPrice) as gross,
    sum(FinalNett) as cost,
    sum(FinalSellingPrice - FinalNett) as profit,
    sum(AdultNo+ChildNo) as pax,
    count(1) as bookings
from Blist b
inner join BHandle bh on b.BookingID = bh.BookingID
where b.BookingDate >= fromDate
    and b.BookingDate <= toDate
    and bh.TicketingStatus = 'CP'
group by staff;
Run Code Online (Sandbox Code Playgroud)