0
我是PostgreSQL和數據庫查詢的新手。僅在符合條件時才選擇行
我有一個user_id列表,大學課程採取,日期開始和完成。 某些用戶有多個條目,有時缺少開始日期或結束日期(或兩者)。
我需要檢索用戶最長的課程,或者如果缺少開始日期,則需要檢索最新的課程。 如果仍有多個選項可用,請在多個選項中隨機選擇。
例如
- 用戶2(下)我想只有「經濟與政治」,因爲它具有最新的日期;
- 在用戶6上,只有「電氣和電子工程」,因爲它是更長的路線。
我做不工作(我覺得我的脫軌)查詢:
(SELECT Q.user_id, min(Q.started_at) as Started_on, max(Q.ended_at) as Completed_on,
q.field_of_study
FROM
(select distinct(user_id),started_at, Ended_at, field_of_study
from educations
) as Q
group by Q.user_id, q.field_of_study)
order by q.user_id
的結果是:
User_id Started_on Completed_on Field_of_studies
2 "2001-01-01" "" "International Economics"
2 "" "2002-01-01" "Economics and Politics"
3 "1992-01-01" "1999-01-01" "Economics, Management of ..."
5 "2012-01-01" "2016-01-01" ""
6 "2005-01-01" "2009-01-01" "Electrical and Electronics Engineering"
6 "2011-01-01" "2012-01-01" "Finance, General"
6 "" "" ""
6 "2010-01-01" "2012-01-01" "Financial Mathematics"
謝謝@jpw!您的查詢適用於大多數情況。但是它沒有優先考慮最近一次相同課程的課程。用戶9仍然顯示2個課程,因爲它們具有相同的長度:9;「」;「Katrinelund Gymnasium」;「1993-01-01」;「1996-01-01」 和-9;「」;「Birkbeck(University英國「;」2005-01-01「;」2008-01-01「 在上面的例子中,我只需要顯示2008年完成的一個。 – Marcello 2015-02-25 12:21:57
@Marcello我已經更新了我的答案;它現在應該選擇最新的課程,但是如果有幾個課程的長度和日期相同,它應該選擇「最高」的課程(以曲線圖排序)。 – jpw 2015-02-25 13:21:24
我添加了「獨特」來防止重複,現在它完全可用。謝謝! – Marcello 2015-02-26 08:58:17