Foxtable(狐表)用户栏目专家坐堂 → 统计execl表中下级会员账号数量大于30个且下级会员账号多于3层的会员账号数量,统计上述会员账号按照证件号去重后的数量 该怎么操作呢?代码或者sql语句该怎么写呢?


  共有2268人关注过本帖树形打印复制链接

主题:统计execl表中下级会员账号数量大于30个且下级会员账号多于3层的会员账号数量,统计上述会员账号按照证件号去重后的数量 该怎么操作呢?代码或者sql语句该怎么写呢?

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/9 11:25:00 [显示全部帖子]

要求admin直接推荐的用户要大于30个 -- 是指推荐人用户名等于admin的有30个?

还是说admin推荐了2个人a和b,a推荐了15人,b推荐了15人,那么admin直接推荐的是算2个人?还是算2+15+15=32?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/9 11:42:00 [显示全部帖子]

我现在搞不懂直接推荐是指什么?请回答2楼的问题。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/9 14:20:00 [显示全部帖子]

去重怎么处理?

1、a推荐c,b也推荐c(马甲)
2、a推荐b,b也推荐a(马甲)
3、a推荐b,b推荐c, c推荐a(马甲)
4、a推荐b,b推荐c, a(马甲)推荐c
5、a推荐a(马甲)
6、a推荐b,重复了多次
7、a推荐b,b推荐c,c推荐d
     a推荐e,e推荐c的马甲,c推荐f
8、......

去重除非一刀切,只要重复就只取一个,否则无法使用程序判断。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/9 16:59:00 [显示全部帖子]

内部函数:sumchild

Dim yh As String = args(0)
Dim lst As List(of String) = args(1)
Dim level As Integer = args(2)
Dim drs As List(Of DataRow) = DataTables("表A").Select("推荐人用户名='" & yh & "'")
If drs.Count = 0 Then Return level
Dim k As Integer
For Each dr As DataRow In drs
    If dr.IsNull("用户证件号") Then
        lst(0) = val(lst(0)) + 1
    Else
        If lst.Contains(dr("用户证件号")) = False
            lst.Add(dr("用户证件号"))
        End If
        k = Functions.Execute("sumchild",dr("用户名"),lst,level+1)
        If k > level Then level = k
    End If
Next

Return level

命令窗口调用
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("用户名", Gettype(String), 32)
dtb.AddDef("层次", Gettype(Integer))
dtb.AddDef("计数", Gettype(Integer))
dtb.Build()
MainTable= Tables("统计")

Dim lst As New List(of String)
For Each yh As String In DataTables("表A").GetValues("用户名")
    lst.Clear
    lst.Add("0")
    Dim k = Functions.Execute("sumchild",yh,lst,0)
    If k>=3 AndAlso (val(lst(0)) + lst.Count-1) >= 30
        Dim r As Row = Tables("统计").AddNew
        r("用户名") = yh
        r("层次") = k
        r("计数") = val(lst(0)) + lst.Count-1
    End If
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/9 20:08:00 [显示全部帖子]

是的,自己核对一下

 回到顶部