0
下面的查詢是一種醜陋的一種,所以我希望我已經把它的間隔足夠好,以使其可讀。該查詢查找來自某個特定醫院的人員的百分比。例如,如果100個人住在X縣,20個去A醫院,80個去B醫院查詢輸出。這種事情到底是怎麼回事?讓我知道是否需要記錄查詢或我可以做的任何事情以使其更清楚。獲取較大組的百分比
hospital A 20
hospital B 80
下面的查詢工作完全一樣我想它,但它給我想:怎麼會這樣對我的表中每一個縣辦呢?
select hospitalname, round(cast(counts as float)/cast(fayettestrokepop as float)*100,2)as percentSeen
from
(
SELECT tblHospitals.hospitalname, COUNT(tblHospitals.hospitalname) AS counts, tblStateCounties_1.countyName,
(SELECT COUNT(*) AS Expr1
FROM Patient INNER JOIN
tblStateCounties ON Patient.stateCode = tblStateCounties.stateCode AND Patient.countyCode = tblStateCounties.countyCode
WHERE (tblStateCounties.stateCode = '21') AND (tblStateCounties.countyName = 'fayette')) AS fayetteStrokePop
FROM Patient AS Patient_1 INNER JOIN
tblHospitals ON Patient_1.hospitalnpi = tblHospitals.hospitalnpi INNER JOIN
tblStateCounties AS tblStateCounties_1 ON Patient_1.stateCode = tblStateCounties_1.stateCode AND Patient_1.countyCode = tblStateCounties_1.countyCode
WHERE (tblStateCounties_1.stateCode = '21') AND (tblStateCounties_1.countyName = 'fayette')
GROUP BY tblHospitals.hospitalname, tblStateCounties_1.countyName
) as t
order by percentSeen desc
編輯:樣本數據 下面的樣本數據是不帶最外層查詢(在as t order by
一部分)。
的countsInTheCounty列是(SELECT COUNT(*)..)部分 'tblStateCounties_1.countyName'
hospitalName hospitalCounts countyName countsInTheCounty
st. james 23 X 300
st. jude 40 X 300
現在,經過與外部查詢,我們將得到
st james 0.076 (23/300)
st. jude 0.1333 (40/300)
「循環」在大多數情況下應該像黑板上的釘子。當然,有一種方法可以解決這個問題,使用縣名作爲額外的分組,你能顯示幾行樣本數據,所以我們知道你是如何達到20/80的? – 2012-07-20 19:44:25
當然,編輯在主要查詢塊之下。 – wootscootinboogie 2012-07-20 19:51:38
我沒有回答這個問題嗎? http://stackoverflow.com/a/11086155/61305 – 2012-07-20 20:26:31