以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何计算平均每次购买金额  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40110)

--  作者:fubblyc
--  发布时间:2013/9/9 22:03:00
--  如何计算平均每次购买金额

如何在“统计结果”表里计算“原始数据”表里的平均每次购买金额。公式=每个人的购买金额/购买次数(相同日期的只算一次,如蔡圣连只算2次)


图片点击可在新窗口打开查看此主题相关图片如下:平均金额(购买次数).png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:平均金额(统计结果).png
图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2013/9/9 22:13:00
--  
 参考下面的代码。

Dim count As Integer = DataTables("原始数据").GetUniqueValues("姓名 = \'xxx\'", "日期").count
Dim sum As Double = DataTables("原始数据").Compute("sum(金额)", "姓名 = \'xxx\'")
msgbox(sum / count)

--  作者:fubblyc
--  发布时间:2013/9/9 22:20:00
--  

有点甜老师,您看下我的这个具体例子。

还有一个就是怎么把“原始数据”表里的姓名自动添加到“统计结果”表里。。。

还请您帮我看下之前写的代码是否有存在问题。

 不胜感激!!!!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:平均每次购买金额.table

 
--  作者:有点甜
--  发布时间:2013/9/9 22:54:00
--  
 把下面的代码写到你的datacolchanged事件里去

Select Case e.DataCol.Name
    Case "最后购买日期"
        If e.DataRow.IsNull("最后购买日期") Then
            e.DataRow("近度") = Nothing
        Else
            Dim  y,m,d As  Integer
            Dim dt1 As  Date =  e.DataRow("最后购买日期")
            Dim dt2 As  Date =  Date.Today
            DateYMD(dt1,dt2,y,m,d)
            e.DataRow("近度") = y * 12 + m
        End If
    Case "密度"
        If e.DataRow.IsNull("密度") = False AndAlso e.DataRow("密度") >= 0 Then
            Select Case e.DataRow("密度")
                Case 0 To 2
                    e.DataRow("密度级别") = 1
                Case 3 To 5
                    e.DataRow("密度级别") = 2
                Case Else
                    e.DataRow("密度级别") = 3
            End Select
        End If
    Case "姓名"
Dim Filter As String = "[姓名] = \'" & e.NewValue & "\'"
        If e.DataRow.Isnull("姓名") = False
            Dim pl As String = DataTables("原始数据").GetComboListString("日期", filter & " and 日期 not is null")
            e.DataRow("密度") = pl.Length - pl.Replace("|","").Length +1
        Else
            e.DataRow("密度") = Nothing
        End If        
        
        If e.DataRow.Isnull("姓名") = False
            Dim pl As String = DataTables("原始数据").GetComboListString("品类", filter & " and 品类 not is null")
            e.DataRow("宽度") = pl.Length - pl.Replace("|","").Length +1
        Else
            e.DataRow("宽度") = Nothing
        End If
        
        e.DataRow("最后购买日期") = DataTables("原始数据").Compute("Max(日期)", Filter)
        
        Dim count As Integer = DataTables("原始数据").GetUniqueValues(Filter, "日期").count
        Dim sum As Double = DataTables("原始数据").Compute("sum(金额)", Filter)
        e.DataRow("平均每次购买金额") = sum / count
End Select

--  作者:fubblyc
--  发布时间:2013/9/10 0:05:00
--  

每次购买金额搞定。谢谢有点甜老师!!