[英]Join Multiple Sql statements from the same table
我已經閱讀了很多有關該主題的文章,但還不滿意。
我有一個名為ticket
的表,其中包含以下各列
TicketID | AirlineID | PassengerID | TicketPrice | TicketVolume | DestinationCountry | ExitCountry | TicketDate`
我有多個查詢,例如
SELECT AVG(TicketPrice)
FROM ticket
WHERE TicketPrice between 552 and 1302
AND AirlineID=1
AND TicketDate between '2016-01-01' and '2016-12-31'
GROUP BY TicketDate
SELECT AVG(TicketPrice)
FROM ticket
WHERE TicketPrice between 552 and 1302
AND AirlineID=1
AND TicketDate between '2017-01-01' and '2017-12-31'
GROUP BY TicketDate
請問如何將兩個查詢並排組成另一個表
+--------------------------------++-----------
| AirlineID || Average Ticket Price 2016/2017|
+--------------------------------++-----------
他們實際上是更多的查詢。
只需使用CASE
即可實現:
嘗試這個:
SELECT
AirlineID,
AVG(CASE WHEN TicketDate BETWEEN '2016-01-01' AND '2016-12-31' THEN TicketPrice END),
AVG(CASE WHEN TicketDate BETWEEN '2017-01-01' AND '2017-12-31' THEN TicketPrice END)
FROM ticket
WHERE
TicketPrice BETWEEN 552 AND 1302 AND
AirlineID = 1
GROUP BY
AirlineID, TicketDate;
這是我的解決方案,也許不是OP的期望輸出,但我認為這是更好的輸出,也不需要硬編碼的日期
SELECT AirlineID, extract(YEAR from TicketDate) as year, AVG(TicketPrice)
FROM ticket
WHERE TicketPrice between 552 and 1302
GROUP BY AirLineID, year
如果要將結果合並到一個表中,請使用UNION。
SELECT {...}
UNION
SELECT {...}
SELECT語句必須返回相同的列
的SQL
SELECT
(SELECT AVG(TicketPrice) FROM ticket
WHERE TicketPrice between 552 and 1302
AND AirlineID=1
AND TicketDate between '2016-01-01' and '2016-12-31'
GROUP BY TicketDate) as Col1,
(SELECT AVG(TicketPrice) FROM ticket
WHERE TicketPrice between 552 and 1302
AND AirlineID=1
AND TicketDate between '2017-01-01' and '2017-12-31'
GROUP BY TicketDate) as Col2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.