所以我有這個表:SQL計算比例加入
列的意思是房子的種類,數量和RegionName。我需要建立一個查詢將返回各區域某戶型的比例,這樣的:
nomRegion tipo Prct
Central Casa independiente 23.5
brunca Casa independiente 54.7
chorotega Casa independiente 12.4
.... Casa independiente ....
我需要加入表本身,讓每區我需要類型的房屋的數量和然後再除以每個地區的房屋總數。我試着編寫這個查詢,但它在所有百分比字段中都返回0。
select T.nomRegion, T.Tipo, (T.Cantidad/SUM(V.Cantidad))*100
from dbo.TipoVivienda T join dbo.TipoVivienda V on T.nomRegion = V.nomRegion
where T.Tipo = 'Casa independiente'
group by T.nomRegion, T.Tipo, T.Cantidad
我已經試過其他的變化,在這個問題上自己基礎:SQL issue: Calculating percentages and using multiple joins to the same table
select T.nomRegion, T.Tipo, 100 * (T.Cantidad/V.Cantidad)
from dbo.TipoVivienda T inner join (select nomRegion as nomRegion, SUM(Cantidad) as Cantidad
from dbo.TipoVivienda
group by nomRegion) V on T.nomRegion = V.nomRegion
where T.Tipo = 'Casa independiente'
group by T.NomRegion, T.Tipo, T.Cantidad, V.Cantidad
但仍然查詢返回0作爲所有區域的百分比。不知道我在做什麼錯在這裏... 我嘗試使用相關查詢的查詢的另一種變體,但結果是一樣的:
select T.nomRegion, T.Tipo, (T.Cantidad/(select SUM(V.cantidad)
from dbo.TipoVivienda V
where V.nomRegion = T.nomRegion
group by V.nomRegion))*100
from dbo.TipoVivienda T
where T.tipo = 'Casa independiente'
任何想法?
乘以1.0以獲得正確的結果,因爲sql不是整數算術。 (T.Cantidad * 1.0/SUM(V.Cantidad))* 100或T.Cantidad * 100.0/SUM(V.Cantidad) – radar 2014-11-14 20:17:40