SQLAlchemy: Dapatkan nilai maksimum nilai terkumpul
P粉738346380
2023-09-01 12:07:40
<p>Saya mempunyai jadual ini dalam apl Flask saya: </p>
<pre class="brush:php;toolbar:false;">class Events(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
timestamp_event = db.Column(db.DateTime, nullable=False)</pre>
<p>Saya perlu mendapatkan hari dengan rekod terbanyak, termasuk nilai dan tarikh itu sendiri dalam format boleh cetak (cth. d/m/y). Saya mencuba kod berikut: </p>
<pre class="brush:php;toolbar:false;">daily_max = db.func.max(db.session.query(db.func.count(Events.id),
db.func.date_format(Events.timestamp_event,'%d/%m/%y'))
.group_by(db.func.date_format(Events.timestamp_event,'%Y%M%D')))</pre>
<p>Kemudian kami berharap daily_max[0] mempunyai nilai dan daily_max[1] tidak mempunyai tarikh hh:mm:ss. </p>
<p>Apabila saya mencetak daily_max selepas pertanyaan, nilainya ialah: </p>
<pre class="brush:php;toolbar:false;">daily_max = max((SELECT count(events.id) AS count_1, date_format(events.timestamp_event, :date_format_2)
AS format_tarikh_1
DARIPADA acara KUMPULAN MENGIKUT date_format(events.timestamp_event, :date_format_3)))</pre>
<p>Ini ialah sampel data. Jawapan (nilai <kod>daily_max</code>) hendaklah <strong>(3, "21/01/2022")</strong>: </p>
<pre class="brush:php;toolbar:false;">id timestamp_event
---- ---------------
1 2022-01-15 12:34
2 2022-01-21 01:23
3 2022-01-21 05:33
4 2022-01-21 11:11
5 2022-01-23 00:01
6 2022-01-23:29</pra>
<p>Ada sebarang petunjuk tentang apa yang saya lakukan salah? Tidak dapat mencari jawapan dalam dokumentasi. </p>
Ini adalah pendekatan yang tidak baik (tidak cekap):
Ia mengumpulkan semua pasangan (kiraan id, tarikh), mengisih pasangan dalam susunan kiraan terbalik dan mendapat pasangan pertama.
Ia menyelesaikan tugas, tetapi saya sangat ingin mengetahui cara yang cekap dan elegan untuk menggunakan func.max().