以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 统计execl表中下级会员账号数量大于30个且下级会员账号多于3层的会员账号数量,统计上述会员账号按照证件号去重后的数量 该怎么操作呢?代码或者sql语句该怎么写呢? (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=137545) |
||||
-- 作者:李孝春 -- 发布时间:2019/7/9 11:06:00 -- 统计execl表中下级会员账号数量大于30个且下级会员账号多于3层的会员账号数量,统计上述会员账号按照证件号去重后的数量 该怎么操作呢?代码或者sql语句该怎么写呢? 统计execl表中下级会员账号数量大于30个且下级会员账号多于3层的会员账号数量,统计上述会员账号按照证件号去重后的数量 以admin为第一级为例 则要求admin直接推荐的用户要大于30个 且这写会员对应推荐的下级至少要有三层 如admin推荐了张三 张三推荐了李四 李四推荐了王五 王五推荐了麻子
该怎么操作呢?代码或者sql语句该怎么写呢? ![]() ![]()
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/9 11:25:00 -- 要求admin直接推荐的用户要大于30个 -- 是指推荐人用户名等于admin的有30个? 还是说admin推荐了2个人a和b,a推荐了15人,b推荐了15人,那么admin直接推荐的是算2个人?还是算2+15+15=32?
|
||||
-- 作者:李孝春 -- 发布时间:2019/7/9 11:37:00 -- 回复:(有点蓝)要求admin直接推荐的用户要大于30个 ... 要求是admin直接推荐30及以上 符合条件的名单 然后这个名单又有不含本名单在内的下级三层名单 然后这个名单利用证件号码去重后 得到最后数据名单数量及列表
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/9 11:42:00 -- 我现在搞不懂直接推荐是指什么?请回答2楼的问题。 |
||||
-- 作者:李孝春 -- 发布时间:2019/7/9 12:18:00 -- 回复:(有点蓝)要求admin直接推荐的用户要大于30个 ... Excel数据是样本数据,建议导入狐表创建表格数据后操作 遍历整个Excel表格数据 只要任何一级名单满足下列条件,就筛选出来。 1、下级总数等于或大于30 2、且满足下级下面又存其推荐1,被推荐人1又推荐2,被推荐人2又推荐3及以上,不少于三层会员的名单 3、利用证件号码对所得到的名单去重处理。 目的:从整个Excel表中的全部记录去查找满足这三个条件的数据。 admin推荐了2个人a和b,a推荐了15人,b推荐了15人,那么admin直接推荐的是算2+15+15=32 ab两个人下面又推荐发展了CD CD又推荐发展了ef ef又发展了gh
[此贴子已经被作者于2019/7/9 12:37:58编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间: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(马甲)推荐c5、a推荐a(马甲) 6、a推荐b,重复了多次 7、a推荐b,b推荐c,c推荐d a推荐e,e推荐c的马甲,c推荐f 8、...... 去重除非一刀切,只要重复就只取一个,否则无法使用程序判断。
|
||||
-- 作者:李孝春 -- 发布时间:2019/7/9 14:58:00 -- 回复:(有点蓝)去重怎么处理?1、a推荐c,b也推荐c(... 去重只需要在前面满足大于三十或者等于三十 且层级等于或者大于三层的数据筛选出来后 再直接用证件号码去重即可 |
||||
-- 作者:有点蓝 -- 发布时间: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 |
||||
-- 作者:李孝春 -- 发布时间:2019/7/9 18:03:00 -- 回复:(有点蓝)内部函数:sumchildDim yh As String... 谢谢有点蓝老师 |
||||
-- 作者:有点蓝 -- 发布时间:2019/7/9 20:08:00 -- 是的,自己核对一下 |