cari

Rumah  >  Soal Jawab  >  teks badan

SQLAlchemy: Dapatkan nilai maksimum nilai terkumpul

<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>
P粉738346380P粉738346380458 hari yang lalu479

membalas semua(1)saya akan balas

  • P粉541565322

    P粉5415653222023-09-02 00:35:55

    Ini adalah pendekatan yang tidak baik (tidak cekap):

    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()

    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().

    balas
    0
  • Batalbalas