Sql 需要帮助写子查询吗

Sql 需要帮助写子查询吗,sql,subquery,Sql,Subquery,我正在使用一个健康数据库,并试图显示访问过健康设施两次以上的患者。到目前为止,我的基本疑问是 SELECT FirstName, LastName FROM PATIENT 我知道我必须在其中使用子查询,但我不知道是否需要使用Count或任何其他操作符来查找就诊次数超过两次的患者 您可以将连接与访问和计数一起使用,使用have for the count>1进行不同(VisitDate)过滤 SELECT FirstName, LastName , count(distinct Visit

我正在使用一个健康数据库,并试图显示访问过健康设施两次以上的患者。到目前为止,我的基本疑问是

SELECT FirstName, LastName
FROM PATIENT
我知道我必须在其中使用子查询,但我不知道是否需要使用Count或任何其他操作符来查找就诊次数超过两次的患者


您可以将连接与访问和计数一起使用,使用have for the count>1进行不同(VisitDate)过滤

  SELECT FirstName, LastName , count(distinct VisitDate)
  FROM PATIENT 
  inner join  VISIT on VISIT.patientID = PATIENT.PatientID 
  group by FirstName, LastName 
  having count(distinct VisitDate) > 1 

使用聚合函数
count
having
子句进行比较

  SELECT P.FirstName, P.LastName,COUNT(V.VisitID) as numberOfVisit
    FROM VISIT V
    JOIN PATIENT P ON P.PatientID = V.PatientID
    GROUP BY V.PatientID, P.FirstName, P.LastName
    HAVING COUNT(V.VisitID) > 2
通过使用子查询,您也可以得到相同的结果,但不需要第一个查询更合适

select * from (
        SELECT P.FirstName, P.LastName,COUNT(V.VisitID) as numberOfVisit
        FROM VISIT V
        JOIN PATIENT P ON P.PatientID = V.PatientID
        GROUP BY V.PatientID, P.FirstName, P.LastName
) as T where T.numberOfVisit>2

虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
select * from (
        SELECT P.FirstName, P.LastName,COUNT(V.VisitID) as numberOfVisit
        FROM VISIT V
        JOIN PATIENT P ON P.PatientID = V.PatientID
        GROUP BY V.PatientID, P.FirstName, P.LastName
) as T where T.numberOfVisit>2