注册 登录
编程论坛 VFP论坛

如何统计每个人的值班天数

王咸美 发布于 2023-05-18 15:40, 1473 次点击
现有表文件ZBB.dbf,如何统计每个人的值班天数? 请高手赐教,万分感谢!!!
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
15 回复
#2
吹水佬2023-05-18 16:08
是不是每个名字出现的次数
#3
厨师王德榜2023-05-18 16:31
代码供参考:
程序代码:
LOCAL col1
LOCAL ii
DIMENSION arr1[1]

CLOSE TABLES ALL
USE zbts IN 0 EXCLUSIVE
USE zbb IN 0 SHARED

CREATE CURSOR tmphz (xm C(20) NOT NULL , ts i NOT null)
AFIELDS(arr1 ,'zbb')

ii = 0
FOR ii = 1 TO ALEN(arr1,1)
    col1 = arr1[ii,1]
    INSERT INTO tmphz (xm,ts) ;
    SELECT &col1 as xm ,1 as ts FROM zbb
ENDFOR

INSERT INTO zbts (姓名, 值班天数) ;
SELECT xm as 姓名,SUM(ts) as 值班天数 FROM tmphz GROUP BY xm

USE IN tmphz
#4
阳光上的桥2023-05-18 16:32
我也是初学者,下面的方法好像很笨,回帖只为做标记,等高手解答。下面两条命令,执行第一条后按CTRL+F2回到命令窗口,再执行第二条:

select OCT_1 from zbb union all select OCT_2 from zbb  union all select OCT_3 from zbb  union all select OCT_4 from zbb union all select OCT_5 from zbb  union all select OCT_6 from zbb  union all select OCT_7 from zbb

select OCT_1,count(*) from query group by OCT_1

只有本站会员才能查看附件,请 登录
#5
王咸美2023-05-18 16:39
@吹水佬 对!就是统计每个名字出现的次数。
#6
吹水佬2023-05-18 17:23
只有本站会员才能查看附件,请 登录

程序代码:
SELECT * FROM zbb INTO ARRAY arr
DIMENSION arr[ALEN(arr,1)*ALEN(arr,2),1]
CREATE CURSOR tmp (姓名 v(10))
INSERT INTO tmp FROM ARRAY arr
SELECT 姓名,COUNT(*) 值班天数 FROM tmp GROUP BY 姓名 ORDER BY 姓名


[此贴子已经被作者于2023-5-18 17:26编辑过]

#7
sdta2023-05-18 17:35
SELECT * FROM zbb INTO ARRAY azbb
DIMENSION azbb[ALEN(azbb, 0), 1]
CREATE CURSOR test (xm c(10))
INSERT INTO test FROM ARRAY azbb
SELECT xm, COUNT(*) 值班天数 FROM test GROUP BY 1 INTO CURSOR zbts
BROWSE
#8
王咸美2023-05-18 19:58
谢谢各位高手的热心指点!
#9
wj02162023-05-19 15:07
回复 6楼 吹水佬
漂亮
#10
wj02162023-05-19 15:08
以下是引用sdta在2023-5-18 17:35:40的发言:

SELECT * FROM zbb INTO ARRAY azbb
DIMENSION azbb[ALEN(azbb, 0), 1]
CREATE CURSOR test (xm c(10))
INSERT INTO test FROM ARRAY azbb
SELECT xm, COUNT(*) 值班天数 FROM test GROUP BY 1 INTO CURSOR zbts
BROWSE

#11
mywisdom882023-05-21 11:50
* 6楼吹版主的方法,巧妙
SELECT * FROM zbb INTO ARRAY arr
DIMENSION arr[ALEN(arr,1)*ALEN(arr,2),1]
CREATE CURSOR tmp (姓名 v(10))
INSERT INTO tmp FROM ARRAY arr
SELECT 姓名,COUNT(*) 值班天数 FROM tmp GROUP BY 姓名 ORDER BY 姓名

* 我想的方法是,把7个连起来
select t1.姓名,count(1) 次数 from (;
select Oct_1 as 姓名 from zbb;
union all;
select Oct_2 as 姓名 from zbb;
union all;
select Oct_3 as 姓名 from zbb;
union all;
select Oct_4 as 姓名 from zbb;
union all;
select Oct_5 as 姓名 from zbb;
union all;
select Oct_6 as 姓名 from zbb;
union all;
select Oct_7 as 姓名 from zbb) t1;
group by t1.姓名 order by t1.姓名 into cursor tmp
brow
#12
ls_y0412023-05-25 08:10
想多问一下如果增加一个分数的字段这个要如何实现统计的工作。谢谢
只有本站会员才能查看附件,请 登录

我想问一下如果说是统计一下一年的值班天数要如何实现一下,应用数组要如何进行处理,我想学习一下数组的处理数据的方法。


[此贴子已经被作者于2023-5-26 07:32编辑过]

#13
sdta2023-05-25 09:11
处理列表单数字段
#14
bdx8082023-05-29 07:40
学习了。谢谢!
#15
bdx8082023-06-08 10:09
以下是引用ls_y041在2023-5-25 08:10:44的发言:

想多问一下如果增加一个分数的字段这个要如何实现统计的工作。谢谢
我想问一下如果说是统计一下一年的值班天数要如何实现一下,应用数组要如何进行处理,我想学习一下数组的处理数据的方法。

我什么也不会,勉强能看懂一些简单的,帮顶一下,或者你需要开新帖,大神们一般都比较忙,很少会看到里面这些提问

[此贴子已经被作者于2023-6-8 10:10编辑过]

#16
吹水佬2023-06-08 10:48
元素是:姓名、得分,可将表变成二维数组处理,如:

只有本站会员才能查看附件,请 登录

转成
只有本站会员才能查看附件,请 登录

按名分类统计
只有本站会员才能查看附件,请 登录

程序代码:
CREATE CURSOR tt (f1 v(10),f2 I,f3 v(10),f4 I,f5 v(10),f6 I)
INSERT INTO tt VALUES ("张三",3,"李四",4,"王五",5)
INSERT INTO tt VALUES ("李四",4,"王五",5,"张三",3)
INSERT INTO tt VALUES ("王五",5,"张三",3,"李四",4)
**SELECT * FROM tt
SELECT * FROM tt INTO ARRAY arr
DIMENSION arr[ALEN(arr)/2,2]
CREATE CURSOR tmp (姓名 v(10), 得分 I)
INSERT INTO tmp FROM ARRAY arr
**SELECT * FROM tmp
SELECT 姓名,SUM(得分) 得分 FROM tmp GROUP BY 姓名 ORDER BY 姓名
1