依赖另一个表的计数的SQL查询?SQL炼金术

2024-04-25 07:53:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个查询,它可以从表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')

Tags: iddbbysessioncount记录filterquery
2条回答

使用子查询:

SELECT * from person
WHERE PersonID IN 
  (SELECT PersonId FROM appointments
   GROUP BY PersonId
   HAVING COUNT(*) >= 5)
AND dob > 25
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

相关问题 更多 >