如何减去差价?
How to get minus off to the the difference?
我正在寻找可用的座位。我尝试使用以下代码,以获取减去容量值后的总行。但它没有这样做。我可以知道正确的做法是什么吗?
SELECT r.Route_No, s.Serial_No, s.Flight_Fly_On, a.Capacity, (Capacity - (count(*) FROM scheduled) AS Available_Seat
FROM Route r, Scheduled s, Airplane a
WHERE s.Serial_No = a.Serial_No
AND r.Route_No = s.Route_No;
请测试以下查询。
我已经标准化了 JOIN 条件,指定我们正在计算时间表 table,并添加了 GROUP BY。
我还添加了 count(s.Route_No) AS seats_booked
列,这样,如果查询没有 return 预期结果,您可以检查 COUNT() 是否正确。如果有问题,这将有助于找到问题。
SELECT
r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity AS total_seats,
COUNT(s.Route_No) AS seats_booked
(a.Capacity - (count(s.Route_No) FROM scheduled) AS Available_Seats
FROM Route r
JOIN Scheduled s ON r.Route_No = s.Route_No
JOIN Airplane a on s.Serial_No = a.Serial_No
GROUP BY
r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity ;
假设您的 SCHEDULED
table 计算某人在特定航班上的时间,并且您可以使用航线、飞机序列号和航班日期唯一标识航班,那么您可以我们使用解析 COUNT
函数(而不是使用 sub-query):
SELECT r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity,
a.Capacity - COUNT(*) OVER (PARTITION BY s.route_no, s.serial_no, s.flight_fly_on)
AS Available_Seat
FROM Route r
INNER JOIN Scheduled s
ON (r.Route_No = s.Route_No)
INNER JOIN Airplane a
ON (s.Serial_No = a.Serial_No);
如果您确实想使用 sub-query,那么您需要将其关联到外部查询:
SELECT r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity,
a.Capacity - (SELECT COUNT(*)
FROM Scheduled c
WHERE s.route_no = c.route_no
AND s.serial_no = c.serial_no
AND s.flight_fly_on = c.flight_fly_on)
AS Available_Seat
FROM Route r
INNER JOIN Scheduled s
ON (r.Route_No = s.Route_No)
INNER JOIN Airplane a
ON (s.Serial_No = a.Serial_No);
如果不是 SCHEDULED
table 保存了一个人的预订详情,而是 BOOKINGS
table,那么您正在使用错误的 table 需要从正确的 table:
算起
SELECT r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity,
a.Capacity - (SELECT COUNT(*)
FROM Bookings b
WHERE b.scheduled_no = s.scheduled_no)
AS Available_Seat
FROM Route r
INNER JOIN Scheduled s
ON (r.Route_No = s.Route_No)
INNER JOIN Airplane a
ON (s.Serial_No = a.Serial_No);
我正在寻找可用的座位。我尝试使用以下代码,以获取减去容量值后的总行。但它没有这样做。我可以知道正确的做法是什么吗?
SELECT r.Route_No, s.Serial_No, s.Flight_Fly_On, a.Capacity, (Capacity - (count(*) FROM scheduled) AS Available_Seat
FROM Route r, Scheduled s, Airplane a
WHERE s.Serial_No = a.Serial_No
AND r.Route_No = s.Route_No;
请测试以下查询。
我已经标准化了 JOIN 条件,指定我们正在计算时间表 table,并添加了 GROUP BY。
我还添加了 count(s.Route_No) AS seats_booked
列,这样,如果查询没有 return 预期结果,您可以检查 COUNT() 是否正确。如果有问题,这将有助于找到问题。
SELECT
r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity AS total_seats,
COUNT(s.Route_No) AS seats_booked
(a.Capacity - (count(s.Route_No) FROM scheduled) AS Available_Seats
FROM Route r
JOIN Scheduled s ON r.Route_No = s.Route_No
JOIN Airplane a on s.Serial_No = a.Serial_No
GROUP BY
r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity ;
假设您的 SCHEDULED
table 计算某人在特定航班上的时间,并且您可以使用航线、飞机序列号和航班日期唯一标识航班,那么您可以我们使用解析 COUNT
函数(而不是使用 sub-query):
SELECT r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity,
a.Capacity - COUNT(*) OVER (PARTITION BY s.route_no, s.serial_no, s.flight_fly_on)
AS Available_Seat
FROM Route r
INNER JOIN Scheduled s
ON (r.Route_No = s.Route_No)
INNER JOIN Airplane a
ON (s.Serial_No = a.Serial_No);
如果您确实想使用 sub-query,那么您需要将其关联到外部查询:
SELECT r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity,
a.Capacity - (SELECT COUNT(*)
FROM Scheduled c
WHERE s.route_no = c.route_no
AND s.serial_no = c.serial_no
AND s.flight_fly_on = c.flight_fly_on)
AS Available_Seat
FROM Route r
INNER JOIN Scheduled s
ON (r.Route_No = s.Route_No)
INNER JOIN Airplane a
ON (s.Serial_No = a.Serial_No);
如果不是 SCHEDULED
table 保存了一个人的预订详情,而是 BOOKINGS
table,那么您正在使用错误的 table 需要从正确的 table:
SELECT r.Route_No,
s.Serial_No,
s.Flight_Fly_On,
a.Capacity,
a.Capacity - (SELECT COUNT(*)
FROM Bookings b
WHERE b.scheduled_no = s.scheduled_no)
AS Available_Seat
FROM Route r
INNER JOIN Scheduled s
ON (r.Route_No = s.Route_No)
INNER JOIN Airplane a
ON (s.Serial_No = a.Serial_No);