我知道我的標題的措辭含糊不清,所以我會盡力澄清我的問題。
任務表
| 用戶身份 | 完成日期 | 任務型別 | 任務編號 |
|---|---|---|---|
| 1 | 11/14/2021 | 一種 | 34 |
| 1 | 11/13/2021 | 乙 | 35 |
| 1 | 11/11/2021 | 一種 | 36 |
| 1 | 11/09/2021 | 乙 | 37 |
| 2 | 11/12/2021 | 一種 | 38 |
| 2 | 11/02/2021 | 一種 | 39 |
| 2 | 11/14/2021 | 乙 | 40 |
| 2 | 10/14/2021 | 乙 | 41 |
我正在使用的表格有更多的欄位,但是,這些是與問題相關的欄位。任務型別可以是 A 或 B。
我目前想要做的是獲得一個結果集,其中每個 user_id 最多包含兩個任務,一個是任務型別 A,一個是任務型別 B,它們在過去 7 天內完成。例如,查詢應生成以下結果集:
| 用戶身份 | 完成日期 | 任務型別 | 任務編號 |
|---|---|---|---|
| 1 | 11/14/2021 | 一種 | 34 |
| 1 | 11/13/2021 | 乙 | 35 |
| 2 | 11/12/2021 | 一種 | 38 |
| 2 | 11/14/2021 | 乙 | 40 |
用戶在該時間段內可能只完成了一種型別的任務,但可以保證任何給定用戶在該時間內至少完成了一項任務。我的問題是是否可以創建一個可以回傳這樣的結果的查詢,或者我是否必須查詢一個更通用的結果,然后通過我的 JPA 中的邏輯修剪設定?
uj5u.com熱心網友回復:
要為給定的 user_id 和 task_type 選擇最近 7 天內的最近任務(如果存在),您可以嘗試以下操作:
SELECT DISTINCT ON (t.user_id, t.task_type) t.*
FROM tasks_table AS t
WHERE t.completed_date >= current_date - interval '7 days'
ORDER BY t.user_id, t.task_type, t.completed_date DESC
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/369096.html
標籤:PostgreSQL的 jpa
