[postgresql] faire un GROUP BY sur plusieurs tables SQL différentes .

Introduction :

Parfois, on doit faire un GROUP BY utilisateurs pour des données dispatchées sur plusieurs tables SQL , en postgres .
Il est conseillé de placer des index sur les composants du ON .
L’exemple comporte un nom d’id_user différent entre les tables exprès .


Exemple de solution :


SELECT
H.id_monapp_utilisateurs AS id_user,
H.prenom,
H.volume_appels,
H.temps_appel,
H.contacts,
D.vente

FROM 

(
SELECT
id_monapp_utilisateurs,
string_agg(distinct(prenom),',') AS prenom ,
COUNT(*) AS volume_appels,
TO_CHAR((SUM(duration) || ' second')::interval, 'HH24:MI:SS')  AS temps_appel ,
COUNT(DISTINCT appeler) AS contacts
FROM crm_historique
GROUP BY id_monapp_utilisateurs
) H

LEFT JOIN 

(
SELECT
id_user,
sum(prix_vente) AS vente
FROM crm_devis
GROUP BY id_user
)D 

ON H.id_monapp_utilisateurs = D.id_user

Résultat :

image

Publicités