【问题标题】:How to get maximum number of distinct values for multiple columns in MYSQL如何获取MYSQL中多列的最大不同值
【发布时间】:2012-03-12 08:38:41
【问题描述】:

我正在尝试查找在线系统用户使用的 ip/端口组合的数量。我想创建具有每个用户名使用的最大 ips 和端口数的列。

我开始的基本查询是这样的:

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_ip max_port 一个 1 2 b 3 2 c 2 1

我尝试了各种形式的分组,但都没有成功。提前感谢您的帮助。

【问题讨论】:

    标签: mysql summary


    【解决方案1】:
    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】:
    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
    

    【讨论】:

      【解决方案3】:

      尝试类似:

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

      【讨论】:

        【解决方案4】:

        以下查询将解决您的问题:

        Select username, COUNT( distinct ip), COUNT( distinct port) from users group by username
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-16
          • 2018-10-14
          • 1970-01-01
          • 1970-01-01
          • 2010-12-06
          • 2022-01-18
          • 2020-09-22
          相关资源
          最近更新 更多