这语句不行吗select userid,sysip,count(sysip) from tabaleName group by userid, sysip

解决方案 »

  1.   

    用一个二维的hashMap
    Map<String, Map<String,Integer>> map = new HashMap<String, Map<String, Integer>>();
    第一维的map的key和value分别为用户id和用户的ip
    第二维的map的key和value分别为用户使用过的ip以及对应的使用次数。
    不知道这样是不是能适合到你的场景。
      

  2.   

    用户:2012213163   IP:10.144.81.00  3次  IP:10.144.81.10  5次
    用户:2012213164   IP:10.144.81.00  3次  IP:10.144.81.10  5次
    用户:2012213172   IP:10.144.21.00  8次  IP:10.145.81.10  6次若期望sql查询结果 类似 上述格式在2楼基础上,
    再做个自连接,连接条件是id相同
      

  3.   

    再做个自连接,连接条件是id相同不用再连接了,直接在代码中处理就行了,用map
      

  4.   

    再做个自连接,连接条件是id相同不用再连接了,直接在代码中处理就行了,用map
    不是在sql中啊,在mongo中,我知道Aggregation框架的group 可以分组统计,可是没有count方法,希望能用java实现。
      

  5.   

    按照二楼的方式去处理
    使用Map<String, Map<String,Integer>> map = new HashMap<String userId, Map<String ip, Integer counts>>();
    每次拿到用户id,先到map中搜,是否包含,包含的话,在对应value,也就是ip和次数对应的map中,查找是否包含该ip,包含的话,将ip对应次数拿出来加1,不包含将ip 和 次数 1 入map
    遍历结束,拿到的最终map就是 new HashMap<String userId, Map<String ip, Integer counts>>();
      

  6.   

    countmap.put(ip, count);
    map.put( userId, countmap);

    if(map.containsKey(userId)){
    if(countmap.containsKey(ip)){
    count=countmap.get(ip)+1;

    }else{
    countmap.put(ip, 1);
    }
    } 求指点,经过过验证输出的次数总是减去前一个ip的次数得到的才是正确的值。新手捂脸