以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 统计的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=147418) |
||||
-- 作者:670163008 -- 发布时间:2020/3/16 14:27:00 -- 统计的问题 有一个“稿件”表库,我需要根据这个库,按单位计算本单位作者的稿费,并根据单位内部考核要求,计算出每位作者的稿费在本单位中的占比,以此来计算他的得分。 由于一个稿件多人稿件时,多个作者放在一个格子里,该如何统计呢 |
||||
-- 作者:有点蓝 -- 发布时间:2020/3/16 15:05:00 -- 以这2行数据为例,说明一下,应该怎么分。然后得到什么结果 |
||||
-- 作者:670163008 -- 发布时间:2020/3/16 21:21:00 -- 同一篇稿件,多个作者,稿费要按人头
平均分 |
||||
-- 作者:有点蓝 -- 发布时间:2020/3/16 21:48:00 -- 作者按人头。单位呢?计算本单位总稿费,比如2楼第二条记录,4个作者4个单位,哪个作者是哪个单位的?还有些3个作者2个单位又怎么区分? |
||||
-- 作者:670163008 -- 发布时间:2020/3/17 8:26:00 -- 嗯,增加一张作者信息表,每位作者对应了一个单位。 现在这张表里的稿件作者我的对应关系是,作者1-作者5,属于单位1;作者6-作者10,属于单位2,作者11-作者15,属于单位3,作者16-作者20,属于单位4. 我重新上传 了项目,增加了“通讯员”表
|
||||
-- 作者:有点蓝 -- 发布时间:2020/3/17 8:53:00 -- Dim dtb As New DataTableBuilder("统计") dtb.AddDef("姓名", Gettype(String), 32) dtb.AddDef("单位", Gettype(String), 32) dtb.AddDef("稿费", Gettype(Double)) dtb.Build() Dim dict As new Dictionary(of String,Double) For Each r As Row In Tables("稿件").Rows Dim ar() As String = r("姓名").split(",") Dim fy As Double = r("稿费") / ar.Length For Each s As String In ar If dict.ContainsKey(s) Then dict(s) = dict(s) + fy Else dict.Add(s,fy) End If Next Next Dim dr,d2 As DataRow For Each key As String In dict.Keys dr = DataTables("统计").AddNew dr("姓名") = key dr("稿费") = dict(key) d2 = DataTables("通讯员").Find("姓名=\'" & key & "\'") If d2 IsNot Nothing Then dr("单位") = d2("单位") End If Next Dim g As New GroupTableBuilder("统计表1", DataTables("统计")) g.Groups.AddDef("单位") g.Groups.AddDef("姓名") g.Totals.AddDef("稿费") g.GroupProportion = True g.Build() MainTable = Tables("统计表1")
|
||||
-- 作者:670163008 -- 发布时间:2020/3/18 8:23:00 -- 因为写稿是“编辑部”五位作者“编辑部作者1-编辑部作者5”的主要工作,他们每个月的考核得分为:“稿费占比*20”与“推广得分”之和。 所以需要: 一、统计稿费占比时,只统计“编辑部”所有作者 二、统计出的占比能否放在固定的表“考核”表中的“占比”。 三、如果可以,稿件在多个作者合作时,在计算占比时,稿费只由“编辑部”的作者(编辑部作者1-编辑部作者5)分配稿费: 1、如果全是编辑部的作者,既“编辑部作者1-编辑部作者5”,大家平均分配稿费。 2、如果作者有其他单位的作者,在计算占比时,稿费也是按照“编辑部”作者的人数来分配,其他单位的作者不分配稿费。 |
||||
-- 作者:有点蓝 -- 发布时间:2020/3/18 9:27:00 -- 看懂代码,自己先改改。如果完全看不懂,请先学习:http://www.foxtable.com/webhelp/topics/0207.htm |
||||
-- 作者:670163008 -- 发布时间:2020/3/18 9:39:00 -- 统计放在固定表试了很久啊,没有哪里说到,搞了一个多星期。 |
||||
-- 作者:有点蓝 -- 发布时间:2020/3/18 9:58:00 -- 先生成统计表,然后在把数据移过去即可: Dim g As New GroupTableBuilder("统计表1", DataTables("统计")) g.Groups.AddDef("单位") g.Groups.AddDef("姓名") g.Totals.AddDef("稿费") g.GroupProportion = True g.Build() for each r as row in Tables("统计表1").rows dim dr as datarow in DataTables("考核").find("单位=\'" & r("单位") & "\' and 姓名=\'" & r("姓名") & "\'") if dr as isnot nothing then dr("稿费") = r("稿费") end if next
|