我如何得到这三行的平均值。(SQL)
我能够得到我需要的三家医院的结果。知道吗,我正试图找出如何将这三个结果平均起来,从而得出整个团队的结果我如何得到这三行的平均值。(SQL),sql,tsql,group-by,average,Sql,Tsql,Group By,Average,我能够得到我需要的三家医院的结果。知道吗,我正试图找出如何将这三个结果平均起来,从而得出整个团队的结果 SELECT H.[Hospital Name], Format(1.0* Avg (Case When s.[PhysicianQuestion]>3 Then 1.0 Else 0 End),'P2') As [Physician Top Box], Format(1.0*Avg (Case When s.[NurseQuestion]=4 Then
SELECT H.[Hospital Name],
Format(1.0* Avg (Case When s.[PhysicianQuestion]>3 Then 1.0 Else 0 End),'P2') As [Physician
Top Box],
Format(1.0*Avg (Case When s.[NurseQuestion]=4 Then 1.0 Else 0 End),'P2') As [Nurse Top Box],
Format( 1.0*Avg ( Case When s.[FacilityQuestion]=4 Then 1.0 Else 0 end),'P2') As [Facility Top Box]
From surveyresponses as S
Join Visits as V on v.AccountNumber=S.AccountNumber
join Hospitals as H on H.HospitalID=V.HospitalID
Group By [Hospital Name]
Order By [Hospital Name]
Results
Central Hospital 74.04% 76.15% 71.26%
Desert Flats Hospital 67.79% 68.99% 73.96%
Mercy Valley Hospital 74.93% 76.45% 73.88%
如果我没有弄错,您可以添加另一个聚合级别:
select
format(avg([Physician Top Box]), 'P2') [Avg Physician Top Box],
format(avg([Nurse Top Box]), 'P2') [Avg Nurse Top Box],
format(avg([Facility Top Box]), 'P2') [Avg Facility Top Box]
from (
select
h.[Hospital Name],
avg(case when s.PhysicianQuestion > 3 then 1.0 else 0 end) As [Physician Top Box],
avg(case when s.NurseQuestion = 4 then 1.0 else 0 end) As [Nurse Top Box],
avg(case when s.FacilityQuestion = 4 then 1.0 else 0 end) As [Facility Top Box]
from surveyresponses as s
inner join Visits as v on v.AccountNumber = s.AccountNumber
inner join Hospitals as h on h.HospitalID = v.HospitalID
group by h.[Hospital Name]
) t
注意,在所有的艺术计算之后,我将格式化移到了外部查询
另一方面,如果需要查询返回的每行的三列值的平均值,可以执行以下操作:
select
[Hospital Name],
format([Physician Top Box], 'P2') [Physician Top Box],
format([Nurse Top Box], 'P2') [Nurse Top Box],
format([Facility Top Box], 'P2') [Facility Top Box],
([Physician Top Box] + [Nurse Top Box] + [Facility Top Box]) / 3 [Avg Top Box]
from (
select
h.[Hospital Name],
avg(case when s.PhysicianQuestion > 3 then 1.0 else 0 end) As [Physician Top Box],
avg(case when s.NurseQuestion = 4 then 1.0 else 0 end) As [Nurse Top Box],
avg(case when s.FacilityQuestion = 4 then 1.0 else 0 end) As [Facility Top Box]
from surveyresponses as s
inner join Visits as v on v.AccountNumber = s.AccountNumber
inner join Hospitals as h on h.HospitalID = v.HospitalID
group by h.[Hospital Name]
) t
请注意,这里并不严格需要子查询;它只是避免了多次重复条件表达式。如果我正确地遵循了您的要求,您可以添加另一个聚合级别:
select
format(avg([Physician Top Box]), 'P2') [Avg Physician Top Box],
format(avg([Nurse Top Box]), 'P2') [Avg Nurse Top Box],
format(avg([Facility Top Box]), 'P2') [Avg Facility Top Box]
from (
select
h.[Hospital Name],
avg(case when s.PhysicianQuestion > 3 then 1.0 else 0 end) As [Physician Top Box],
avg(case when s.NurseQuestion = 4 then 1.0 else 0 end) As [Nurse Top Box],
avg(case when s.FacilityQuestion = 4 then 1.0 else 0 end) As [Facility Top Box]
from surveyresponses as s
inner join Visits as v on v.AccountNumber = s.AccountNumber
inner join Hospitals as h on h.HospitalID = v.HospitalID
group by h.[Hospital Name]
) t
注意,在所有的艺术计算之后,我将格式化移到了外部查询
另一方面,如果需要查询返回的每行的三列值的平均值,可以执行以下操作:
select
[Hospital Name],
format([Physician Top Box], 'P2') [Physician Top Box],
format([Nurse Top Box], 'P2') [Nurse Top Box],
format([Facility Top Box], 'P2') [Facility Top Box],
([Physician Top Box] + [Nurse Top Box] + [Facility Top Box]) / 3 [Avg Top Box]
from (
select
h.[Hospital Name],
avg(case when s.PhysicianQuestion > 3 then 1.0 else 0 end) As [Physician Top Box],
avg(case when s.NurseQuestion = 4 then 1.0 else 0 end) As [Nurse Top Box],
avg(case when s.FacilityQuestion = 4 then 1.0 else 0 end) As [Facility Top Box]
from surveyresponses as s
inner join Visits as v on v.AccountNumber = s.AccountNumber
inner join Hospitals as h on h.HospitalID = v.HospitalID
group by h.[Hospital Name]
) t
请注意,这里并不严格需要子查询;它只是避免了多次重复条件表达式。如果需要获得医院员工的整体绩效
select [Hospital Name],
format( (([Physician Top Box] + [Nurse Top Box] + [Facility Top Box] )/3), 'P2') AS
[Overall Hospital Performance]
from (
select
h.[Hospital Name],
avg(case when s.PhysicianQuestion > 3 then 1.0 else 0 end) As [Physician Top Box],
avg(case when s.NurseQuestion = 4 then 1.0 else 0 end) As [Nurse Top Box],
avg(case when s.FacilityQuestion = 4 then 1.0 else 0 end) As [Facility Top Box]
from surveyresponses as s
inner join Visits as v on v.AccountNumber = s.AccountNumber
inner join Hospitals as h on h.HospitalID = v.HospitalID
group by h.[Hospital Name]
) t
如果需要了解医院员工的整体绩效
select [Hospital Name],
format( (([Physician Top Box] + [Nurse Top Box] + [Facility Top Box] )/3), 'P2') AS
[Overall Hospital Performance]
from (
select
h.[Hospital Name],
avg(case when s.PhysicianQuestion > 3 then 1.0 else 0 end) As [Physician Top Box],
avg(case when s.NurseQuestion = 4 then 1.0 else 0 end) As [Nurse Top Box],
avg(case when s.FacilityQuestion = 4 then 1.0 else 0 end) As [Facility Top Box]
from surveyresponses as s
inner join Visits as v on v.AccountNumber = s.AccountNumber
inner join Hospitals as h on h.HospitalID = v.HospitalID
group by h.[Hospital Name]
) t
提供样本数据、期望结果和适当的数据库标记。提供样本数据、期望结果和适当的数据库标记。您好,感谢您的帮助,我正在尝试从医院获得avg结果的输出,例如,中心医院的结果是74.04%76.15%71.26%,我想把这些结果平均起来,得到一个综合结果score@LamarReynolds:好的,我明白了。请参阅我答案中的第二个查询。您好,谢谢您的帮助,我正在尝试从医院获得平均结果的输出。例如,中心医院的结果为74.04%76.15%71.26%。我想将这些结果平均起来,以获得一个合成结果score@LamarReynolds:好的,我明白了。请参阅我答案中的第二个问题。