A maneira mais elegante seria usar o
USING
cláusula em uma condição de junção explícita:SELECT houseid, v.vehid, v.epatmpg, d.houseid, d.trpmiles
FROM vehv2pub v
JOIN dayv2pub d USING (houseid)
WHERE v.vehid >= 1
AND d.trpmiles < 15;
Dessa forma, a coluna
houseid
está no resultado apenas uma vez , mesmo se você usar SELECT *
. Por documentação:
Para obter o
epatmpg
médio para as linhas selecionadas:SELECT avg(v.epatmpg) AS avg_epatmpg
FROM vehv2pub v
JOIN dayv2pub d USING (houseid)
WHERE v.vehid >= 1
AND d.trpmiles < 15;
Se houver várias correspondências em
dayv2pub
, a tabela derivada pode conter várias instâncias de cada linha em vehv2pub
após a junção. avg()
é baseado na tabela derivada.