楼主: ljw0316
1561 6

[问题] Perl 统计出每个用户在商店购买的金额,次数。 [推广有奖]

  • 1关注
  • 1粉丝

已卖:10份资源

硕士生

96%

还不是VIP/贵宾

-

威望
0
论坛币
608 个
通用积分
0.9101
学术水平
8 点
热心指数
8 点
信用等级
8 点
经验
6242 点
帖子
279
精华
0
在线时间
131 小时
注册时间
2011-6-9
最后登录
2023-2-7

楼主
ljw0316 发表于 2013-8-12 12:05:02 |AI写论文
5论坛币
IP|时间|服务器区号|qq号|角色GUID|交易流水号|物品ID|物品数量|货币额度|货币类型|订单状态|商店ID
10.147.26.55|2011-09-24 00:00:00|5|44...58|360287970189959153|0|4400027|5|10000|3|0|7
10.147.26.55|2011-09-24 00:00:01|5|11...68|360287970189988998|0|4400026|1|100000|3|0|4
...
目标:使用 Perl 统计出每个用户在商店购买的金额,次数。
求助参考代码,不胜感激!

最佳答案

1120311766 查看完整内容

#!/usr/bin/perl 设log文件名为“test.txt” open(F,"test.txt")or die "error"; $line=0; while(){ chomp; if($line==0){$line=1;next;} #跳过第一行 @array=split /\|/; $freq{$array[3]}++; #用户以qq号,累积每行交易次数 $amount{$array[3]}+=$array[7]; #累积该qq号的货币额度 } close F; foreach $temp (sort {$freq{$b}$freq{a}} keys %freq) {#按交易次数排序 print $temp."\t".$amount{$temp}."\t" ...
关键词:Perl Erl guid 不胜感激 流水号 角色 不胜感激 服务器 流水号 统计

沙发
1120311766 发表于 2013-8-12 12:05:03
#!/usr/bin/perl
设log文件名为“test.txt”
open(F,"test.txt")or die "error";
$line=0;
while(<F>){
        chomp;
        if($line==0){$line=1;next;} #跳过第一行
        @array=split /\|/;
        $freq{$array[3]}++; #用户以qq号,累积每行交易次数
        $amount{$array[3]}+=$array[7]; #累积该qq号的货币额度
}
close F;

foreach $temp (sort {$freq{$b}<=>$freq{a}} keys %freq) {#按交易次数排序
        print $temp."\t".$amount{$temp}."\t".$freq{$temp}."\n";
}

藤椅
ljw0316 发表于 2013-8-15 16:15:48
1120311766 发表于 2013-8-14 18:16
#!/usr/bin/perl
设log文件名为“test.txt”
open(F,"test.txt")or die "error";
首先,非常感谢!
然后有个问题,程序没有实现按照购买次数排序。
还有就是,最后需要输出一个结果文件,怎么实现呢?


板凳
1120311766 发表于 2013-8-15 17:12:40
同一用户确定标准是IP地址还是QQ号?向输出文件写入哪些数据?1120311766@qq.com

报纸
ljw0316 发表于 2013-8-15 17:53:06
1120311766 发表于 2013-8-15 17:12
同一用户确定标准是IP地址还是QQ号?向输出文件写入哪些数据?
标准是QQ号码;写入结果:QQ号码,次数,金额。

地板
1120311766 发表于 2013-8-15 18:18:37
#!/usr/bin/perl
设log文件名为“test.txt”
open(F,"test.txt")or die "error";
$line=0;
while(<F>){
        chomp;
        if($line==0){$line=1;next;} #跳过第一行
        @array=split /\|/;
        $freq{$array[3]}++; #用户以qq号,累积每行交易次数
        $amount{$array[3]}+=$array[7]; #累积该qq号的货币额度
}
close F;

foreach $temp (sort {$freq{$b}<=>$freq{$a}} keys %freq) {#按交易次数排序
        print $temp."\t".$amount{$temp}."\t".$freq{$temp}."\n";
}
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ljw0316 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

7
ljw0316 发表于 2013-8-15 18:25:16
#!/usr/bin/perl
#设log文件名为“test.txt”
#执行 perl pinggu.pl >pinggu.out
open(F,"test.txt")or die "error";
$line=0;
$count=0;
while(<F>){
        chomp;
        #if($count>10){last;}
        $count++;
        if($line==0){$line=1;next;} #跳过第一行
        @array=split /\|/;
        #print $array[3]."\t".$array[7]."\n";
        $freq{$array[3]}++; #用户以qq号,累积每行交易次数
        $amount{$array[3]}+=$array[8]; #累积该qq号的货币额度
}
close F;

foreach $temp (sort {$freq{$b}<=>$freq{$a}|| $amount{$b}<=>$amount{$a}} keys %freq) {
        print $temp."\t".$freq{$temp}."\t".$amount{$temp}."\n";
}
上面的朋友写的,希望能给有类似困惑的童鞋一丝帮助。非常感谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-9 00:03