我正在嘗試恢復發生次數少于表中指定的合同數量。為此,我有兩個表,一個存盤合同資料和hired_frequency,另一個顯示合同發生次數,顯示我們擁有合同的次數。在這種情況下,我無法創建一個回傳所有行的 SQL(在 Postgres 中),這些行沒有出現次數,并且其中出現的次要事件是hired_frequency 描述的。
表 1 - 合同
ID | hired_frequency
527 | 1
528 | 3
526 | 5
555 | 1
413 | 3 -- not show this
500 | 1 -- not show this
表 2 - 出現次數
itinerary_fixed_id | contract_id
2443 | 527
2443 | 528
123 | 526
123 |555
我的選擇(不作業)
SELECT
*
FROM
contracts
WHERE
hired_frequency > (
SELECT COUNT
( * )
FROM
occurrences
WHERE
contracts.ID = occurrences.contract_id
GROUP BY
contract_id
)
我創建了一個小提琴來測驗...... http://sqlfiddle.com/#!17/95cd2/1/0
uj5u.com熱心網友回復:
當您加入 contract.ID =occurrences.contract_id 并按它分組時,它將聚合并只為您提供 1 作為 value ,因為沒有重復。你需要的只是內連接
SELECT
*
FROM
contracts
WHERE
hired_frequency > (
SELECT COUNT
( * )
FROM
occurrences
WHERE
contracts.ID = occurrences.contract_id
)
uj5u.com熱心網友回復:
試試這個
SELECT *
FROM contracts a
WHERE ID NOT IN ( SELECT b.contract_id
FROM occurrences b )
OR hired_frequency > ( SELECT COUNT(c.contract_id)
FROM occurrences c
WHERE a.ID = c.contract_id
GROUP BY c.contract_id);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334431.html
標籤:sql PostgreSQL
