2017-07-22 3 views
1

J'essaie d'extraire des données statistiques de ma base de données. J'ai une table _employees et je veux compter le nombre d'employés par pays. Supposons que la table _employees comporte une colonne country et que j'ai cette requête pour une représentation de valeur-clé d'un nombre agrégé.Comment générer un objet json comme clé, valeur en utilisant postgres?

select json_object_agg(key, value) 
from (
     select distinct e.country 
     from _employees as e group by (e.country) 
    ) as key, 
    (
     select distinct count(1) 
     from _employees as e 
     group by(e.country) 
    ) as value; 

Je veux les données comme celui-ci

{ 
    "ET": 100, 
    "JM": 245 // And it will go on like this 
} 

mais j'ai l'erreur suivante

valeur clé doit être tableau scalaire, non, composite ou JSON.

Est-ce que cela peut être fait? Y a-t-il une meilleure façon de s'y prendre?

Répondre

2

Dans les pays sélectionnez la requête interne avec le nombre d'employés dans chaque pays:

select json_object_agg(country, count) 
from (
    select country, count(*) 
    from _employees 
    group by 1 
    ) s;