Postgresql Nombre de comptes multiples pour une table
De deux colonnes dans ma table, je veux obtenir un unifiée prise en compte pour les valeurs dans ces colonnes.
Comme un exemple, les deux colonnes sont:
Table: rapports
| type | place |
-----------------------------------------
| one | home |
| two | school |
| three | work |
| four | cafe |
| five | friends |
| six | mall |
| one | work |
| one | work |
| three | work |
| two | cafe |
| five | cafe |
| one | home |
Si je fais:
SÉLECTIONNEZ le type, count(*) à partir de rapports
groupe par type
J'obtiens:
| type | count |
-----------------------------
| one | 4 |
| two | 2 |
| three | 2 |
| four | 1 |
| five | 2 |
| six | 1 |
Im essayant d'obtenir quelque chose comme ceci: (une colonne la plus à droite avec mes types regroupés et plusieurs colonnes avec le comte de vallées pour chaque lieu)
J'obtiens:
| type | home | school | work | cafe | friends | mall |
-----------------------------------------------------------------------------------------
| one | 2 | | 2 | | | |
| two | | 1 | | 1 | | |
| three | | | 2 | | | |
| four | | | | 1 | | |
| five | | | | 1 | 1 | |
| six | | | | | | 1 |
qui serait le résultat de l'exécution d'un comte comme celle ci-dessus pour chaque endroit comme celui-ci:
SELECT type, count(*) from reports where place = 'home'
group by type
SELECT type, count(*) from reports where place = 'school'
group by type
SELECT type, count(*) from reports where place = 'work'
group by type
SELECT type, count(*) from reports where place = 'cafe'
group by type
SELECT type, count(*) from reports where place = 'friends'
group by type
SELECT type, count(*) from reports where place = 'mall'
group by type
Est-ce possible avec postgresql?
Merci d'avance.
source d'informationauteur Chuydb
Vous devez vous connecter pour publier un commentaire.
vous pouvez utiliser
case
dans ce cas -Il faut résoudre votre problème
@S T Mohammed,
Pour obtenir un tel type nous pouvons simplement utiliser
using
aprèsgroup
ouwhere
condition dans la requête externe, comme ci-dessous -Réponse par praktik garg est correct, il n'est pas nécessaire d'utiliser
else 0
:Vous pouvez également utiliser la même syntaxe plus courte:
Cela fonctionne parce que la valeur booléenne true est coulé à 1 si la condition est remplie.
Vous pouvez utiliser la clause de filtre: