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