Foxtable(狐表)用户栏目专家坐堂 → SQLGroupTableBuilder如何筛选?


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

主题:SQLGroupTableBuilder如何筛选?

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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
SQLGroupTableBuilder如何筛选?  发帖心情 Post By:2018/2/1 11:51:00 [只看该作者]

如下代码,红字部门是错误的。


Dim sg As New SQLGroupTableBuilder("统计表1","masterlist_cip")
sg.Co  nne  cti
sg.filter="stage='assigned' or stage='Closed' or stage='Rejected by ActionOwner'"
sg.AddTable("masterlist_cip","advisor","masterdata","name_of_user")
sg.groups.AddDef("Dateofrisen",DateGroupEnum.quarter,"Quarter")
sg.Groups.AddDef("dept_of_user","Dept")

sg.Totals.AddDef("problem",AggregateEnum.count,"Idears")
sg.Totals.AddExp("name_of_user","Case When dept_of_user = [Dept] Then dept_of_user End","Headcount",AggregateEnum.count)
sg.build
MainTable = Tables("统计表1")

我希望能做出如下数量,怎么做?
季度 部门 数量 人员 人均
1 A 123 5 24.6
1 B 4 3 1.3
2 A 43 5 8.6
2 B 54 3 18
3 A 21 5 4.2
3 B 32 3 10.6
4 A 35 5 7
4 B 542 3 180
季度和部门两列已经OK,然后查询统计数量也OK,但是如何做出筛选出对应的A部门的人数?因为我要算人均。

123的数量可能是5个人中的1个人贡献的,但是我需要的是与部门总人数进行算平均。

是否可以在SQLGroupTableBuilder一次性做出?



[此贴子已经被作者于2018/2/1 11:53:29编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/1 12:01:00 [只看该作者]

不需要判断吧?直接统计人员count、平均avg即可。

 

如果你是需要去重复的话,那就不能直接统计了,需要生成表格以后,再计算不重复人数、平均数


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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/2/1 12:12:00 [只看该作者]

不行,这样子就会在部门列筛出了发过数量的员工,而不是部门总人数。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/1 12:14:00 [只看该作者]

以下是引用lur320在2018/2/1 12:12:00的发言:
不行,这样子就会在部门列筛出了发过数量的员工,而不是部门总人数。

 

生成表后,循环每一行,计算不重复人数,和平均数

 

http://www.foxtable.com/webhelp/scr/2747.htm

 


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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/2/1 12:17:00 [只看该作者]

这样我会做了,但是如何填入临时生成的统计表1?我找了没找到插入列的方法。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/2/1 12:31:00 [只看该作者]

以下是引用lur320在2018/2/1 12:17:00的发言:
这样我会做了,但是如何填入临时生成的统计表1?我找了没找到插入列的方法。

 

build之后生成统计表1,然后循环统计表1每一行,查找对应的部门信息值,填入

 

for each r as row in tables("统计表1").rows

 

next


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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/2/1 12:42:00 [只看该作者]

good,先随便塞一些数据,创建2个列,然后把数据覆盖掉。

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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/2/1 12:56:00 [只看该作者]

不过又有问题了,覆盖数据后,平均值的列只有0和1,估计是数据格式的问题。如何解决?
是否是由于数量列原先是count,
然后平均值是小数,只显示整数部分?
季度 部门 数量 人员
1 Engineering 1 8
1 Operations 3 3
4 Production-OT 3 3
4 Quality 19 30
季度 部门 数量 人员
1 Engineering 0 8
1 Operations 1 3
4 Production-OT 1 3
4 Quality 1 30
[此贴子已经被作者于2018/2/1 12:56:56编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/2/1 12:59:00 [只看该作者]

DataTables("统计表1").DataCols("Idears").SetFormat("0.00")

For Each r As Row In Tables("统计表1").rows
r("Idears")=CInt(r("Idears"))/CInt(r("TEMP1"))
我修改了列的格式还是不对
季度 部门 数量 人员
1 Engineering 0.00 8
1 Operations 1.00 3
4 Production-OT 1.00 3
4 Quality 1.00 30
[此贴子已经被作者于2018/2/1 13:00:01编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2018/2/1 13:13:00 [只看该作者]

搞定

Dim sg As New SQLGroupTableBuilder("统计表1","masterlist_cip")
sg.Connn
sg.filter="stage='assigned' or stage='Closed' or stage='Rejected by ActionOwner'"
sg.AddTable("masterlist_cip","advisor","masterdata","name_of_user")
sg.groups.AddDef("Dateofrisen",DateGroupEnum.quarter,"Quarter")
sg.Groups.AddDef("dept_of_user","Dept")

sg.Totals.AddDef("problem",AggregateEnum.count,"Idears")
sg.Totals.AddDef("dept_of_user",AggregateEnum.count,"TEMP1")
sg.build
MainTable = Tables("统计表1")
For Each r As Row In Tables("统计表1").rows
r("TEMP1")=DataTables("masterdata").Compute("count(name_of_user)","dept_of_user='" & r("Dept") & "'")
Next
DataTables("统计表1").DataCols.Add("Avg",Gettype(Single))

For Each r As Row In Tables("统计表1").rows

r("Avg")=val(r("Idears"))/val(r("TEMP1"))

Next

 回到顶部
总数 11 1 2 下一页