我想知道如果我可以得到一些幫助這個SQL查詢。這來自我失敗並且現在想要學習的測試。我花了很多時間在上面,看了關於SQL的教程,但我仍然沒有得到它如何寫..我該如何編寫這個SQL查詢?
有2個表(航班,occupation_flights)與航班信息和任務是:編寫一個查詢,提供未來7天的航班列表,並顯示航班,可用座位數量,佔用座位數量和佔座位百分比。
FLIGHTS:
FLIGHT ID_COMPANY DATE ORIGIN DESTINATION PLACES
1003 D3 20/01/2006 MADRID LONDRES 40
1007 AF 20/01/2006 PARIS MALAGA 12
1003 15 30/01/2006 MADRID LONDRES 20
1007 AF 30/01/2006 PARIS MALAGA 17
(地演出的每個航班提供的名額)
OCCUPATION_FLIGHTS:
FLIGHT ID_COMPANY DATE PASSENGER SEAT
1003 IB 20/01/2006 07345128H 01V
1003 IB 20/01/2006 1013456213 01P
1003 IB 20/01/2006 08124356C 02V
1003 IB 20/01/2006 57176355K 02P
1007 AF 20/01/2006 27365138A
1003 IB 30/01/2006 734512811 01V
1003 IB 30/01/2006 1013456213 02V
1003 IB 30/01/2006 57176355K
(當座椅是空的,這意味着一個人還未出票)。 TEST DATA 我想得到一些可用的座位,我應該總結一下當每個航班和日期的乘客不是空的情況下,並從地方提取這些情況。 於是我開始與像水木清華:
SELECT
f.flight,
f.places - (SELECT (CASE WHEN of.passanger IS NOT NULL THEN 1 ELSE 0 END)
FROM occupation_flights AS of GROUP BY of.flight, of.date) AS available,
f.places - (SELECT (CASE WHEN of.passanger IS NULL THEN 1 ELSE 0 END) FROM occupation_flights AS of GROUP BY of.flight, of.date) AS occupied,
100.0 * ((f.places - (SELECT (CASE WHEN of.passanger IS NOT NULL THEN 1 ELSE 0 END) FROM occupation_flights AS of GROUP BY of.flight, of.date))/f.places AS %occupied
FROM flights AS f
JOIN occupation_flights AS of ON f.flight=of.flight
WHERE f.date BETWEEN DateAdd(DD,-7,GETDATE()) and GETDATE()
GROUP BY f.flight
,但是這還不算完,因爲我真的不知道如何讓他計算出它的飛行和日期,同時羣體,因爲有與航班相同的航班號,但在不同的日期。我也無法訪問表格,測試是在紙上,並顯示你知道如何編寫SQL查詢。 會真的感謝任何見解! 非常感謝提前!
我將你的數據分組在sqlfiddle中:http://sqlfiddle.com/#!9/d62a4隨意編輯你的帖子,如測試數據,然後鏈接它的網址,這樣其他人也有這個數據,我也我會盡力去得到你需要的東西,但我並不是最擅長的這類事情:p –
你確定你使用的是mysql嗎? getdate和dateadd不是mysql函數 –
嗨,傑里米,非常感謝您的回答。我現在將查看所有評論並試圖理解這些邏輯。非常感謝這個sql小提琴,我不知道這樣的事情存在,它使事情變得更容易!我不知道是否實際上使用mysql,我在工作中總是使用pgadmin postgre或者像以前那樣,並且這個任務僅僅來自我對失敗的sql知識的測試。 – Yana