찾다

 >  Q&A  >  본문

SQLAlchemy: 그룹화된 값의 최대값 가져오기

<p>내 Flask 앱에 다음 테이블이 있습니다:</p> <pre class="brush:php;toolbar:false;">클래스 이벤트(db.Model): id = db.Column(db.Integer, Primary_key=True, 자동 증가=True) timestamp_event = db.Column(db.DateTime, nullable=False)</pre> <p>인쇄 가능한 형식(예: d/m/y)의 값과 날짜 자체를 포함하여 가장 많은 기록이 있는 날짜를 가져와야 합니다. 다음 코드를 사용해 보았습니다. </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>그런 다음 daily_max[0]에 값이 있고 daily_max[1]에 hh:mm:ss의 날짜가 없기를 바랍니다. </p> <p>쿼리 뒤에 daily_max를 인쇄하면 값은 다음과 같습니다. </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 날짜_형식_1 FROM 이벤트 GROUP BY date_format(events.timestamp_event, :date_format_3)))</pre> <p>데이터 샘플입니다. 대답(<code>daily_max</code>의 값)은 <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 23:29</pre> <p>내가 뭘 잘못하고 있는지에 대한 단서가 있나요? 설명서에서 답변을 찾을 수 없습니다. </p>
P粉738346380P粉738346380458일 전478

모든 응답(1)나는 대답할 것이다

  • P粉541565322

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

    이것은 나쁜(비효율적인) 접근 방식입니다:

    으아악

    모든 (ID 개수, 날짜) 쌍을 그룹화하고 개수의 역순으로 쌍을 정렬한 후 첫 번째 쌍을 가져옵니다.

    작업이 완료되었지만 func.max()를 사용하는 효율적이고 우아한 방법을 알고 싶습니다.

    회신하다
    0
  • 취소회신하다