Похоже, что ваш запрос не вычисляет количество каждого имени, сгруппированного по городам и штатам, а скорее количество каждого идентификатора, сгруппированного по имени, городу и стране. Предполагая, что это то, что вы хотите, то проценты могут быть рассчитаны следующим образом:
SELECT count(N.ID) as NameCount
, count(N.ID) * 100.0/(SELECT COUNT(*) FROM NAME WHERE Country = N.Country AND City = N.City) as NamePercent
, N.Name
, N.Country
, N.City
FROM NAME N
GROUP BY N.country, N.city, N.Name
Вот тест скрипки я создал для него: http://sqlfiddle.com/#!2/875026/1/0
Что касается второго вопроса - от комментариев,
Как рассчитать AVE пропущенных имен в разных городах, сгруппированных по стране. Например: количество Майков в NY-2, Chicago-4, LA-5. Так пр Майку в США составляет 3,6
Вы могли бы сделать что-то вроде этого:
SELECT Name
, Country
, AVG(NameCount) NameAvgAcrossCountry
FROM
(SELECT count(N.ID) as NameCount
, count(N.ID) * 100.0/(SELECT COUNT(*) FROM NAME WHERE Country = N.Country AND City = N.City) as NamePercent
, N.Name
, N.Country
, N.City
FROM NAME N
GROUP BY N.country, N.city, N.Name) NamesQuery
GROUP BY Name, Country
Большое спасибо, Майк! Это именно то, что я ищу. – Nheb
Еще один вопрос: – Nheb
Как рассчитать AVE прокси-сервера в разных городах, сгруппированных по стране. Например: количество Майков в NY-2, Chicago-4, LA-5. Таким образом, для Майка в США 3,6 – Nheb