Je veux une commande "group by and count" dans sqlalchemy. Comment puis-je faire ceci?
Je veux une commande "group by and count" dans sqlalchemy. Comment puis-je faire ceci?
Réponses:
La documentation sur le comptage indique que pour les group_by
requêtes, il est préférable d'utiliser func.count()
:
from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Table.query
propriété au lieu de session.query()
:Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Si vous utilisez la Table.query
propriété:
from sqlalchemy import func
Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Si vous utilisez la session.query()
méthode (comme indiqué dans la réponse de miniwark):
from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Vous pouvez également compter sur plusieurs groupes et leur intersection:
self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()
La requête ci-dessus renverra des décomptes pour toutes les combinaisons possibles de valeurs des deux colonnes.