Sql 将4个表与条件连接时,我得到了3次结果

Sql 将4个表与条件连接时,我得到了3次结果,sql,join,duplicates,Sql,Join,Duplicates,我有四张桌子 word raw_value b t page_id 页面 id metadata document_id 文档 id error_status 定时 user_name to document_id 这是我的四个表,我想选择id、原始值和较低值(原始值),但在某些情况下,我的sql查询如下: SELECT p.id, array_agg(w.raw_value) as words_top , array_agg(lower(w.raw_value)) as words

我有四张桌子

word

raw_value
b
t
page_id
页面

id
metadata
document_id
文档

id
error_status
定时

user_name
to
document_id
这是我的四个表,我想选择id、原始值和较低值(原始值),但在某些情况下,我的sql查询如下:

SELECT  p.id, 
array_agg(w.raw_value) as words_top ,
array_agg(lower(w.raw_value)) as words_top_lowercase
FROM word w
LEFT OUTER JOIN page p
       ON w.page_id = p.id
       AND ((w.b+w.t)/cast(p.metadata->>'height' as float) < 0.33)
LEFT OUTER JOIN document d
       ON p.document_id = d.id
       AND d.error_status not in ('REVIEW_REQUESTED', 'TO_VALIDATE', 'TO_CORRECT', 'NO_INVOICE')
LEFT OUTER JOIN timing t
       ON d.id = t.document_id
       AND t.user_name IN ('Richard Andrian', 'Adrien Rajon', 'Francine Rak')
       AND t.t0 > '2018-06-15'
group by p.id;
你能帮我解决这个问题吗?我试图在数组_agg中使用DISTINCT,但这不是正确的方法,因为单词_top(例如)应该返回单词“Téléphone”4次,而DISTINCT只返回一次。我在这里使用的查询返回单词“Téléphone”12次,其他所有单词都是一样的。这意味着所有结果都是每3个重复的

当我尝试查看特定页面id的顶级单词列表时,如果没有添加连接,我会得到这样的结果:

{:,:,:,吉恩大道,吉安,焦尔斯,-53000,拉瓦尔,蒂莱福涅,0243686300,蒂莱科皮,at,ra,DépôT,制造,洛杉矶,加里,-53800,洛杉矶,塞勒-克拉奈斯,蒂莱福涅,0243091920,蒂莱福涅,0243091913,南非,非洲联盟,首都,德国,400768,E,Gedimat,02430606900299944420243686301,SOC}


我正在寻找这种结果,而不是重复的结果。

您能添加一个示例数据和更好的格式样式吗?重复记录通常来自两个方面,事实上,您正在链接的一个表中有多个记录,或者其中一个连接中缺少一个条件。但是,仅仅看这个例子很难说。也可以尝试按
w.raw\u值
@DDS分组。我尝试按w.raw\u值分组,但它仍然返回重复的结果。我们对float数据类型有问题,我看到您正在强制转换为float数据类型,尝试使用小数点可能
计时
表对所有三个
用户名
具有相同的
文档id
 ['Gare', 'Gare', 'Gare', 'La', 'La', 'La', 'Fabrication',
 'Fabrication', 'Fabrication', 'Dépôt', 'Dépôt', 'Dépôt', 'ra', 'ra',
 'ra', 'at', 'at', 'at', ':', 'Télécopie', 'Télécopie', 'Télécopie',
 '0243686300', '0243686300', '0243686300', 'Téléphone', 'Téléphone',
 'Téléphone', 'LAVAL', 'LAVAL', 'LAVAL', '-53000', '-53000', '-53000',
 'Jaurès', 'Jaurès', 'Jaurès', 'Jean', 'Jean', 'Jean', 'Boulevard',
 'Boulevard', 'Boulevard', '39,', '39,', '39,', 'BRICOLAGE',
 'BRICOLAGE', 'BRICOLAGE', '&', '&', '&', 'MATÉRIAUX', 'MATÉRIAUX',
 'MATÉRIAUX', 'Télécopie', 'Télécopie', 'Télécopie', '0299963860',
 '0299963860', '0299963860', ':', ':', ':', ':', 'Téléphone', ':', ':',
 ':', 'Téléphone', 'Téléphone', 'GUERCHE-DE-BRETAGNE',
 'GUERCHE-DE-BRETAGNE', 'GUERCHE-DE-BRETAGNE', 'LA', 'LA', 'LA',
 '-35130', '-35130', '-35130', 'Téléphone', 'Rennes', 'Gedimat',
 'Gedimat', 'Gedimat', '0243060690', '0243060690', '0243060690',
 '0299964442', '0299964442', '0299964442', '0243686301', 'Rennes',
 'de', 'de', 'SOC', 'SOC', 'SOC', 'de', 'Agences', 'Agences',
 'Agences', '0243686301', 'Route', 'Route', 'Route', 'Télécopie',
 'Télécopie', 'Télécopie', '0243091919', '0243091919', '0243091919',
 'Téléphone', 'Téléphone', 'Téléphone', 'CRAON', 'CRAON', 'CRAON',
 '-53400', '-53400', '-53400', 'Pépinière', 'Pépinière', 'Pépinière',
 'La', 'La', 'La', 'ZA', 'ZA', 'ZA', 'Social', 'Social', 'Social',
 'Siège', 'Siège', 'Siège', '0243686301', ':', 'Rennes', '0243091920',
 '0243091920', '0243091920', 'Télécopie', 'Télécopie', 'Télécopie',
 '0243091913', '0243091913', '0243091913', 'S.A.S', 'S.A.S', 'S.A.S',
 'au', 'au', 'au', 'Capital', 'Capital', 'Capital', 'de', 'de', 'de',
 '400768', '400768', '400768', 'E', 'E', 'E', 'Téléphone', 'Téléphone',
 'SELLE-CRAONNAISE', 'SELLE-CRAONNAISE', 'SELLE-CRAONNAISE', 'LA',
 'LA', 'LA', '-53800', '-53800', '-53800']