ฉันต้องการคำสั่ง "จัดกลุ่มและนับ" ใน sqlalchemy ฉันจะทำเช่นนี้ได้อย่างไร?
ฉันต้องการคำสั่ง "จัดกลุ่มและนับ" ใน sqlalchemy ฉันจะทำเช่นนี้ได้อย่างไร?
คำตอบ:
เอกสารเกี่ยวกับการนับกล่าวว่าสำหรับgroup_by
คำสั่งจะดีกว่าการใช้งานfunc.count()
:
from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
Table.query
ทรัพย์สินแทนsession.query()
:Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
หากคุณกำลังใช้Table.query
ทรัพย์สิน:
from sqlalchemy import func
Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
หากคุณใช้session.query()
วิธีการ (ตามที่ระบุไว้ในคำตอบของ miniwark):
from sqlalchemy import func
session.query(Table.column, func.count(Table.column)).group_by(Table.column).all()
คุณยังสามารถไว้วางใจได้ในหลายกลุ่มและจุดตัดของพวกเขา:
self.session.query(func.count(Table.column1),Table.column1, Table.column2).group_by(Table.column1, Table.column2).all()
คำค้นหาด้านบนจะส่งคืนการนับสำหรับชุดค่าผสมที่เป็นไปได้ทั้งหมดจากทั้งสองคอลัมน์