2015-02-14 10 views
0

У меня есть список имен с указанием страны и города.MySQL: рассчитать процент в подгруппе

| COUNTRY | CITY | NAME | ID| 

Мне нужно найти подсчет каждого имени, сгруппированного по стране и городу. Мне также нужен процент каждого имени В каждом городе/стране. Например:

РЕЗУЛЬТАТЫ

SELECT count(ID), country, city, name 
from table NAME 
GROUP BY country, city, name 

Как рассчитать процент каждого имени в пределах каждого города/страны?

ответ

0

Похоже, что ваш запрос не вычисляет количество каждого имени, сгруппированного по городам и штатам, а скорее количество каждого идентификатора, сгруппированного по имени, городу и стране. Предполагая, что это то, что вы хотите, то проценты могут быть рассчитаны следующим образом:

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 
+0

Большое спасибо, Майк! Это именно то, что я ищу. – Nheb

+0

Еще один вопрос: – Nheb

+0

Как рассчитать AVE прокси-сервера в разных городах, сгруппированных по стране. Например: количество Майков в NY-2, Chicago-4, LA-5. Таким образом, для Майка в США 3,6 – Nheb

Смежные вопросы