Chcę polecenie „grupuj według i licz” w sqlalchemy. W jaki sposób mogę to zrobić?
Chcę polecenie „grupuj według i licz” w sqlalchemy. W jaki sposób mogę to zrobić?
Odpowiedzi:
Dokumentacja na liczeniu mówi, że dla group_by
zapytań to lepiej jest użyć func.count()
:
from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Table.query
właściwości zamiast session.query()
:Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Jeśli korzystasz z Table.query
właściwości:
from sqlalchemy import func
Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Jeśli używasz session.query()
metody (jak podano w odpowiedzi miniwarka):
from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Możesz też liczyć na wiele grup i ich przecięcia:
self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()
Powyższe zapytanie zwróci liczby dla wszystkich możliwych kombinacji wartości z obu kolumn.