ROW_NUMBER()などの "window functions"を使用して構造体が正確に構成されているかどうかは完全にはわかりません。結合された派生テーブル(サブクエリ)から単一行を供給するためにOVERたとえば、次のように
SELECT
s.something1
, s.something2
, s.account_id
, d2.organization_id
, d2.cn
FROM something s
LEFT JOIN (
SELECT
organization_id
, account_id
, cn
, ROW_NUMBER() OVER (PARTITION BY organization_id ORDER BY cn) rn
FROM (
SELECT
u.organization_id
, sfdcc.account_id
, COUNT(*) OVER (PARTITION BY u.organization_id, sfdcc.account_id) cn
FROM public.sfdc_contact sfdcc
JOIN public.users u ON u.email = sfdcc.email
) d1
) d2 ON s.account_id = d2.account_id and d2.rn = 1
COUNT(の使用)(OVER)おそらく不要であり、これは、より実用的なことがあります
SELECT
s.something1
, s.something2
, s.account_id
, d2.organization_id
, d2.cn
FROM something s
LEFT JOIN (
SELECT
organization_id
, account_id
, cn
, ROW_NUMBER() OVER (PARTITION BY organization_id ORDER BY cn) rn
FROM (
SELECT
u.organization_id
, sfdcc.account_id
, COUNT(*) cn
FROM public.sfdc_contact sfdcc
JOIN public.users u ON u.email = sfdcc.email
GROUP BY
u.organization_id
, sfdcc.account_id
) d1
) d2 ON s.account_id = d2.account_id and d2.rn = 1
も注意してください、あなたが最高のカウントを望んでいたならば、使用順序を変更することを行番号にDESCending:
, ROW_NUMBER() OVER (PARTITION BY organization_id ORDER BY cn DESC) rn
代わりに結合を使用する(別のサブクエリを作成してメインクエリに参加させる) – AlexYes