【问题标题】:SQL Query that relies on COUNT from another table? - SQLAlchemy依赖另一个表中的 COUNT 的 SQL 查询? - SQL炼金术
【发布时间】:2010-10-30 04:15:32
【问题描述】:

我需要一个查询,该查询可以返回表 A 中的记录,该记录在表 B 中具有多于 COUNT 条记录。该查询需要能够与可能应用于表 A 的其他过滤器保持一致。

示例案例研究:

我有一个人和约会表。我正在寻找所有参加过 5 次或更多约会的人。它还必须支持 person 表上的额外过滤语句,例如 age > 18。

编辑——解决方案

subquery = db.session.query(Appointment.id_person, 
                            func.count('*').label('person_count')) \
                     .group_by(Appointment.id_person).subquery()
qry = db.session.query(Person) \
                .outerjoin((subquery, Person.id == subquery.c.id_person)) \
                .order_by(Person.id).filter(subquery.c.person_count >= 5).filter(Person.dob <= '1992-10-29')

【问题讨论】:

    标签: python sql sqlalchemy


    【解决方案1】:

    使用子查询:

    SELECT * from person
    WHERE PersonID IN 
      (SELECT PersonId FROM appointments
       GROUP BY PersonId
       HAVING COUNT(*) >= 5)
    AND dob > 25
    

    【讨论】:

    • 我很高兴能提供帮助,尽管我明显缺乏阅读理解能力。
    【解决方案2】:
    SELECT Person.PersonID, Person.Name
    FROM Person INNER JOIN Appointment
    ON Person.PersonID = Appointment.PersonID
    GROUP BY Person.PersonID, Person.Name
    HAVING COUNT(Person.PersonID) >= 5
    

    【讨论】:

      猜你喜欢
      • 2014-10-12
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 2021-09-17
      相关资源
      最近更新 更多