Как получить максимальное количество различных значений для нескольких столбцов в MYSQL - PullRequest
2 голосов
/ 12 марта 2012

Я пытаюсь найти количество комбинаций ip / port, используемых пользователями онлайн-системы.Я хочу создать столбцы с максимальным количеством ips и портов, используемых на имя пользователя.

Основной запрос, с которого я начинаю, таков:

Select distinct username, ip, port from users u, peers p where u.usernum=p.usernum group by username, ip, port

Для данных:

a 1.1.1.1 12345
a 1.1.1.1 13579
b 9.8.7.6 11111
b 9.5.5.5 11115
b 9.2.2.2 11111
c 5.6.7.8 33333
c 5.6.0.0 33333

Я хотел бы получить выводчтобы выглядеть следующим образом:

user max_ip max_port
a    1      2 
b    3      2
c    2      1 

Я пробовал различные формы группировки, но безуспешно.Заранее благодарим за помощь.

Ответы [ 4 ]

3 голосов
/ 12 марта 2012
SELECT username
     , COUNT(DISTINCT ip) AS max_ip
     , COUNT(DISTINCT port) AS max_port 
FROM users u
  JOIN peers p 
    ON u.usernum = p.usernum 
GROUP BY username
2 голосов
/ 12 марта 2012
SELECT username,COUNT(DISTINCT ip) AS max_ip,COUNT(DISTINCT port) AS max_port
FROM users ur, peers pr where ur.usernum = pr.usernum 
GROUP BY username
0 голосов
/ 12 марта 2012

Следующий запрос решит вашу проблему:

Select username, COUNT( distinct ip), COUNT( distinct port) from users group by username
0 голосов
/ 12 марта 2012

попробуйте что-то вроде:

Select username, count(ip), count(distinct port) 
from users u, peers p where u.usernum=p.usernum group by username
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...