SQLAlchemy: Ermitteln Sie den Maximalwert gruppierter Werte
P粉738346380
P粉738346380 2023-09-01 12:07:40
0
1
515
<p>Ich habe diese Tabelle in meiner Flask-App: </p> <pre class="brush:php;toolbar:false;">class Events(db.Model): id = db.Column(db.Integer, primärer_schlüssel=Wahr, autoinkrement=Wahr) timestamp_event = db.Column(db.DateTime, nullable=False)</pre> <p>Ich benötige den Tag mit den meisten Datensätzen, einschließlich des Werts und des Datums selbst, in einem druckbaren Format (z. B. T/M/J). Ich habe den folgenden Code ausprobiert: </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>Dann hoffen wir, dass daily_max[0] einen Wert hat und daily_max[1] nicht das Datum hh:mm:ss hat. </p> <p>Wenn ich daily_max nach der Abfrage ausdrucke, ist der Wert: </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 date_format_1 FROM events GROUP BY date_format(events.timestamp_event, :date_format_3)))</pre> <p>Dies ist ein Beispiel der Daten. Die Antwort (der Wert von <code>daily_max</code>) sollte <strong>(3, "21/01/2022")</strong> sein: </p> <pre class="brush:php;toolbar:false;">id timestamp_event ---- --------------- 1 2022-01-15 12:34 2 21.01.2022 01:23 3 21.01.2022 05:33 4 21.01.2022 11:11 5 23.01.2022 00:01 6 23.01.2022 23:29</pre> <p>Irgendwelche Hinweise darauf, was ich falsch mache? Ich kann die Antwort nicht in der Dokumentation finden. </p>
P粉738346380
P粉738346380

Antworte allen(1)
P粉541565322

这是一种糟糕(低效)的方法:

daily_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'))\
            .order_by(db.func.count(Events.id).desc()).first()

它将所有的(id计数,日期)对进行分组,按计数的逆序对这些对进行排序,然后获取第一个对。

它能完成工作,但我真的很想知道使用func.max()的高效、优雅的方法。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage