Nhóm theo & hàm đếm trong sqlalchemy


Câu trả lời:


165

Các tài liệu về đếm nói rằng đối với group_bycác truy vấn nó là tốt hơn để sử dụng func.count():

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()

16
và đây là báo cáo kết quả đầy đủ cho những người sử dụng Table.querytài sản thay vì session.query():Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Jakub Kukul

2
@jkukul Đây phải là câu trả lời cho riêng mình - Tôi luôn tự hỏi làm thế nào để vượt qua hạn chế này khi thực hiện truy vấn con và muốn sử dụng group_by và đếm ..!
chris-sc

1
Các chỉnh sửa cho câu trả lời này khiến câu đầu tiên trở nên vô nghĩa. "Tốt hơn" cái gì ?
Mark Amery,

33

Nếu bạn đang sử dụng Table.querytài sản:

from sqlalchemy import func
Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()

Nếu bạn đang sử dụng session.query()phương pháp (như đã nêu trong câu trả lời của miniwark):

from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()

+ một cho với các thực thể
Espoir Murhabazi 30/09/18

27

Bạn cũng có thể tin tưởng vào nhiều nhóm và giao điểm của chúng:

self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()

Truy vấn trên sẽ trả về số lượng cho tất cả các kết hợp giá trị có thể có từ cả hai cột.


Cảm ơn về câu hỏi, trong khi suy nghĩ về nó, tôi đã tìm thấy câu trả lời cho một câu hỏi liên quan của tôi. ;-)
fccoelho
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.