2

オンラインシステムのユーザーが使用しているIP/ポートの組み合わせの数を見つけようとしています。ユーザー名ごとに使用されるIPとポートの最大数で列を作成したいと思います。

私が始めている基本的なクエリはこれです:

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

データの場合:

1.1.1.1 12345
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

出力を次のようにしたいと思います。

ユーザーmax_ipmax_port
a 1 2
b 3 2
c 2 1

さまざまな形式のグループ化を試しましたが、成功しませんでした。よろしくお願いします。

4

4 に答える 4

3
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
于 2012-03-12T08:43:36.350 に答える
2
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
于 2012-03-12T08:50:34.440 に答える
0

次のようなものを試してください:

Select username, count(ip), count(distinct port) 
from users u, peers p where u.usernum=p.usernum group by username
于 2012-03-12T08:41:57.230 に答える
0

次のクエリで問題が解決します。

Select username, COUNT( distinct ip), COUNT( distinct port) from users group by username
于 2012-03-12T08:51:59.060 に答える