這可能很簡單,但我無法弄清楚......
我有兩個表:
tbl_results:
runID | balance |
1 | 3432
2 | 5348
3 | 384
tbl_phases:
runID_fk | pc |
1 | 34
1 | 2
1 | 18
2 | 15
2 | 18
2 | 20
3 | -20
3 | 10
3 | 60
我想獲得一個記錄集:runID、balance、min(pc)、max(pc)僅當每個 runID 的pc>10 和 pc<50作為一個組時,不包括任何關聯的 pc 值超出值范圍的 runID。
我希望從上面描述的結果中得到以下結果:
runID | balance | min_pc | max_pc
2 | 5348 | 15 | 20
...因為 runID=1&3 的 pc 值超出了上述 pc 的數字范圍。
提前致謝!
uj5u.com熱心網友回復:
您可以根據您在您的擁有條款中的要求應用過濾器。您可以嘗試以下方法。
查詢#1
SELECT
r.runID,
MAX(r.balance) as balance,
MIN(p.pc) as min_pc,
MAX(p.pc) as max_pc
FROM
tbl_results r
INNER JOIN
tbl_phases p ON p.runID_fk = r.runID
GROUP BY
r.runID
HAVING
MIN(p.pc)>10 AND MAX(p.pc) < 50;
| 運行ID | 平衡 | min_pc | 最大PC |
|---|---|---|---|
| 2 | 5348 | 15 | 20 |
查詢#2
SELECT
r.runID,
MAX(r.balance) as balance,
MIN(p.pc) as min_pc,
MAX(p.pc) as max_pc
FROM
tbl_results r
INNER JOIN
tbl_phases p ON p.runID_fk = r.runID
GROUP BY
r.runID
HAVING
COUNT(CASE WHEN p.pc <= 10 or p.pc >= 50 THEN 1 END) =0;
| 運行ID | 平衡 | min_pc | 最大PC |
|---|---|---|---|
| 2 | 5348 | 15 | 20 |
查看 DB Fiddle 上的作業演示
更新了 Rahul Biswas 的評論
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/346467.html
