2016-04-01 22 views
1

Kırsal veya kentsel bir konumda bulunan kuruluşların oranlarına bakmaya çalışıyorum - 'Kırsallık' kategorisinde 'Kırsal', 'Kentsel' veya ' BOŞ'. 'Kentsel' ve 'Kırsal' yüzdelerini tüm değerlerin yüzdesi olarak hesaplayabilirim, ancak tüm oluşumları 'NULL' değeriyle hariç tutmak istiyorum.SQL: Yalnızca belirli değerlerin yüzdesi olarak yineleme sayısı

SELECT Geography_Rurality_DEFRA_Grouped as 'Type', 
COUNT(*) as 'Count', 
(COUNT(Geography_Rurality_DEFRA_Grouped)* 100/(SELECT COUNT(*) FROM [SWFC_Project].[dbo].[Lookup_SchoolLevelIndicators])) AS Perc 
FROM [SWFC_Project].[dbo].[Lookup_SchoolLevelIndicators] 
WHERE Geography_Rurality_DEFRA_Grouped IS NOT NULL 
GROUP BY [Geography_Rurality_DEFRA_Grouped] 
ORDER BY 'Count' desc, Geography_Rurality_DEFRA_Grouped 

Ve çıkışı:: Şu anda

Ben

Type | Count | Perc 
------------------- 
Urban| 78117 | 72 
Rural| 27693 | 25 

istediğim oysa yüzdeler, ancak,% 97 kadar ekleyin Ancak 'Kentsel' ve 'Köy' için 'NULL' değerleri hariç% 100'üm.

Bu, fark yaratan SSMS kullanıyorum. senin alt sorgu üzerinde koşulu eklemelisiniz yılında

+0

'* 100.0' Fark eder:

Ama SQL Server Pencereli Agrega İşlevini destekler, sadece bir GRUP SUM gerek? – jarlh

+0

Alt sorgunuzda NEREDEN NEMİN YOKTUR –

cevap

2

böyle IS NOT NULL: Sadece boş değerlere dışlayan, hangi COUNT(Geography_Rurality_DEFRA_Grouped) yerine COUNT(*) geçebilirsiniz

SELECT Geography_Rurality_DEFRA_Grouped as 'Type', 
COUNT(*) as 'Count', 
(COUNT(Geography_Rurality_DEFRA_Grouped)* 100/
(SELECT COUNT(*) 
FROM [SWFC_Project].[dbo].[Lookup_SchoolLevelIndicators] 
WHERE Geography_Rurality_DEFRA_Grouped IS NOT NULL) AS Perc 
FROM [SWFC_Project].[dbo].[Lookup_SchoolLevelIndicators] 
WHERE Geography_Rurality_DEFRA_Grouped IS NOT NULL 
GROUP BY [Geography_Rurality_DEFRA_Grouped] 
ORDER BY 'Count' desc, Geography_Rurality_DEFRA_Grouped 
1

.

SELECT Geography_Rurality_DEFRA_Grouped AS 'Type', 
    COUNT(Geography_Rurality_DEFRA_Grouped) AS 'Count', 

    100 * COUNT(*)/SUM(COUNT(*)) OVER() AS Perc 
FROM [SWFC_Project].[dbo].[Lookup_SchoolLevelIndicators] 
WHERE Geography_Rurality_DEFRA_Grouped IS NOT NULL 
GROUP BY [Geography_Rurality_DEFRA_Grouped] 
ORDER BY 'Count' DESC, Geography_Rurality_DEFRA_Grouped 
İlgili konular