我有以下表格:如何從統計結果中的SQL計算平均
訪問: VID, PID, 日期
患者: PID, PNAME, 年齡, 性別
所以我想知道每個病人的平均訪問量。 我試圖很難解決它,但仍然無法完成! 希望有人能幫助我。
我有以下表格:如何從統計結果中的SQL計算平均
訪問: VID, PID, 日期
患者: PID, PNAME, 年齡, 性別
所以我想知道每個病人的平均訪問量。 我試圖很難解決它,但仍然無法完成! 希望有人能幫助我。
您可以通過計算總訪問次數除以患者總數來完成此操作。
select (select count(*) from visits)/(select 1.0*count(*) from patients) as AvgVisitsPerPatient
注意以下幾點:
1.0*
是需要改變的計數爲十進制。 SQL Server對整數進行整數除法。patients
表。一些患者可能沒有任何訪問,並且包括在內。select
中使用嵌套子查詢。這是允許的。編輯:
您沒有足夠的信息來計算平均值爲給定的時間單位。雖然你有訪問的日期,但你沒有病人的日期,所以你不知道在任何時間點人口是誰。
這太棒了!並感謝您的評論,併發布解決方案!但我如何使用AVG功能?可以說一個病人有3次訪問,所以我想知道平均值... – appleduardo
@appleduardo。 。 。你需要一個子查詢,這不是回答這個問題的最好方法。有點時髦。你想要一個平均值。 SQL有'AVG()'。然而,最好的方法是將計算結果除以計數。 –
爲什麼子查詢不是最好的方法? 我只是即時通訊開始使用數據庫,並且我會說他們不需要用AVG()來計算,但是我的老師希望我這樣做:/ so ... – appleduardo
每位患者的平均訪問次數是不可能的。任何單個病人的總訪問次數只有一個標量值。你無法平均。您可以對所有患者的訪問次數或每位患者的每月訪問次數進行平均,但當只有一組數值時,您無法平均一組數值。 (或在技術上準確,您可以平均一個值,但平均值與該值相同,因爲計數爲1)。
所有患者的平均訪視次數= 訪問總次數/患者人數
Select Avg(Count(*))
From Visits
Group By pid
每月訪問每個病人
Select p.pid, p.pname,
Avg(z.monthVisits) AvgMonthlyVisits
From (Select Pid, Count(*) monthVisits
From table
Group By Pid, Month(date)) z
join Patient p
on p.pid = z.pid
Group By p.pid
你試過到目前爲止什麼SQL的平均數? –
平均每個(日,周,月,年...)是什麼? – peterm
sql server 2008!每月平均每月 – appleduardo