Kelompokkan menurut & fungsi hitung di sqlalchemy


Jawaban:


165

The dokumentasi di penghitungan mengatakan bahwa untuk group_bypermintaan lebih baik untuk digunakan func.count():

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

16
dan berikut pernyataan lengkap untuk mereka yang menggunakan Table.queryproperti sebagai pengganti session.query():Table.query.with_entities(Table.column, func.count(Table.column)).group_by(Table.column).all()
Jakub Kukul

2
@jkukul Ini seharusnya menjadi jawaban tersendiri - Saya selalu bertanya-tanya bagaimana cara mengatasi batasan ini saat melakukan subkueri dan ingin menggunakan group_by dan menghitung ..!
chris-sc

1
Pengeditan jawaban ini membuat kalimat pertama menjadi tidak berarti. "Lebih baik" dari apa ?
Mark Amery

33

Jika Anda menggunakan Table.queryproperti:

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

Jika Anda menggunakan session.query()metode (seperti yang dinyatakan dalam jawaban miniwark):

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

+ satu untuk dengan entitas
Espoir Murhabazi

27

Anda juga dapat mengandalkan banyak kelompok dan persimpangannya:

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

Kueri di atas akan mengembalikan jumlah semua kemungkinan kombinasi nilai dari kedua kolom.


Terima kasih atas pertanyaannya, sambil memikirkannya saya menemukan jawaban untuk pertanyaan terkait milik saya. ;-)
fccoelho
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.