Foxtable(狐表)用户栏目专家坐堂 → SQLGroupTableBuilder 有条件的 distinct count 问题


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

主题:SQLGroupTableBuilder 有条件的 distinct count 问题

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
SQLGroupTableBuilder 有条件的 distinct count 问题  发帖心情 Post By:2014/2/18 23:22:00 [显示全部帖子]

有点甜老师:
有一个比较棘手的问题:

Dim g As New SQLGroupTableBuilder("统计表2", "VIP消费信息")
g.C
g.Groups.AddDef("购买日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("购买日期", "月")
g.Groups.AddDef("门市专柜编号")
g.Totals.AddDef("实收金额", "VIP销售额_值")
g.Totals.AddDef("数量","VIP销售件数_值")
g.Totals.AddExp("VIP销售笔数",。。。)    '这里不懂得写了。 详细解释在后面
g.SamePeriodGrowth = True
g.CircleGrowth = True
g.GrandProportion= True
g.Build()
Tables("经营成果分析_经营成果分析").DataSource = g.BuildDataSource()
Tables("经营成果分析_经营成果分析").DataTable.DataCols.Add("物单价", Gettype(Integer), "VIP销售额_值/VIP销售件数_值")



详细解释:

VIP销售笔数   的意思为 在一个时间段内(比如一个月)产生了多少笔交易。

例子:
 购买日期           VIP卡号
2012-01-15  4910000113
2012-10-19  4910000113
2012-11-07  4910000113
2013-03-14  4910000115
2013-03-14  4910000115
2013-03-14  4910000116

如上例子   4910000113  VIP来过3次,4910000115  VIP来过1次(同一天只算一次交易笔数,有两条记录是因为同一天买了两件,但是只来过一次)

所以:
不能直接取【VIP卡号】字段统计不重复计数
是因为 这样产生少算的情况。(这个时间段产生过两次(含)以上的交易,但只算成了一次交易)  如4910000113 会员的情况


不能直接去【购物日期】字段统计不重复计数
是因为 这样产生少算的情况。(这个时间段不同的VIP在同一天交易,实际有两次及以上的交易,但只算成了一次交易) 如4910000115与 4910000116 会员的情况

那要如何做?



[此贴子已经被作者于2014-2-19 0:03:59编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/2/19 18:47:00 [显示全部帖子]

各位老师看下例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:有条件的 distinct count 问题.rar



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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/2/19 18:51:00 [显示全部帖子]

重新上传整理过数据的例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:有条件的 distinct count 问题 2.rar


[此贴子已经被作者于2014-2-19 19:22:39编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/2/19 19:26:00 [显示全部帖子]

如例子:
2014-02-16 00:00:00 T700Z001 HAZZYS北京 4910000115 邱骥
2014-02-15 00:00:00 T700Z002 HAZZYS上海 4910000115 邱骥

我用这个代码写:
Dim g As New SQLGroupTableBuilder("统计表2", "VIP消费信息")
g.C
g.Groups.AddDef("购买日期", DateGroupEnum.Year, "年")
g.Groups.AddDef("购买日期", "月")
g.Groups.AddDef("门市专柜编号")
g.Totals.AddDef("实收金额", "VIP销售额_值")
g.Totals.AddDef("数量","VIP销售件数_值")
g.Totals.AddDef("VIP卡号",AggregateEnum.Count,"VIP销售笔数_值") 
g.SamePeriodGrowth = True
g.CircleGrowth = True
g.GrandProportion= True
g.Build()
Tables("经营成果分析_经营成果分析").DataSource = g.BuildDataSource()
Tables("经营成果分析_经营成果分析").DataTable.DataCols.Add("物单价", Gettype(Integer), "VIP销售额_值/VIP销售件数_值")

出现的问题是:
4910000115 邱骥  2014年2月  实际来过两次,但是这个代码就算成一次了。

是因为我是用【月】分组的,统计同一个月的不重复的VIP卡号的计数值,但是4910000115 邱骥  虽然在一个月内是重复值,但是它是这个月内不同的日期来的。如何才能加上呢?


[此贴子已经被作者于2014-2-19 19:31:53编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/2/19 19:41:00 [显示全部帖子]

谢谢有点甜老师,你的方法:先查询到结果,再统计一次  有效!!

[此贴子已经被作者于2014-2-19 19:52:33编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/2/19 21:12:00 [显示全部帖子]

有点甜老师,那加载树可以加载查询后的统计表吗?
如例子:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分项加载查询到结果统计之后的统计表.rar


加载的是统计之后的表 


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/2/19 21:23:00 [显示全部帖子]

哦,原来如此!!谢谢谢谢有点甜老师!!

 回到顶部