2014-07-14 3 views
-3

파일에서 발생 횟수를 찾으십시오. 또한 최대 값과 최소값을 찾을 수 있습니다. Im는 일어날 수있는 것을 찾을 수 있습니다.Perl :: 최대 실행 값과 최대 값을 찾으려면

stat.pl <your data file> 

추가 자신을 총 :

파일

SQL :: select * from person ...etc , Time Taken :: 30 
SQL :: select * from emp ...etc , Time Taken :: 5 
SQL :: select * from home ...etc , Time Taken :: 20 
SQL :: select * from emp ...etc , Time Taken :: 30 
SQL :: select * from person ...etc , Time Taken :: 10 
SQL :: select * from home ...etc , Time Taken :: 20 
SQL :: select * from person ...etc , Time Taken :: 50 

출력은 enter code here

SQL     No of occu  total Min Max 
select * from person 3     90 10 50 
select * from emp  2     35 5 30 
+1

귀하의 질문에 조금 더 자세히 설명 할 수 있습니다. 마찬가지로, SQL 질문이 아닌 펄 질문 인 이유는 무엇입니까. – Sobrique

+0

[무엇을 시도해 봤습니까?] (http://whathaveyoutried.com/) SO는 저에게 code-for-me 사이트가 아닙니다. 너는 너 자신을 위해 노력해야 할 것이고, 어딘가에서 갇혀있을 때 여기에 문제를 진술하면 도움을받을 것이다. – dgw

+0

Im 파일에서 이걸 읽는 중 ... Im 각 SQL과 같은 보고서를 생성하는 중 Mach 시간이 얼마나 걸리는지 그리고 분, 실행 최대 시간. – user3265858

답변

0
#!/usr/bin/perl 


# sql -> {times, min, max} 
my $data = {}; 
while (<>) { 
    if (m{SQL.*?(select.*?\.\.\.).*?Taken\s\:\:\s(\d+)}xmsi) { 
     my ($sql, $time) = ($1, $2); 
     my $times = $data->{$sql}->{times} || 0; 
     my $min = $data->{$sql}->{min} || $time; 
     my $max = $data->{$sql}->{max} || $time; 
     $max = $time if $time > $max; 
     $min = $time if $time < $min; 
     $times++; 

     $data->{$sql}->{min} = $min; 
     $data->{$sql}->{max} = $max; 
     $data->{$sql}->{times} = $times; 
    } 
} 

print "SQL No of occu total Min Max\n"; 
foreach my $sql(sort keys %{$data}) { 
    print "$sql $data->{$sql}->{times} total $data->{$sql}->{min} $data->{$sql}->{max}\n"; 
} 

실행해야합니다.

+0

정말 고마워요. 작동합니다. CSV로 출력하는 데 문제가 있습니다. 열 (SQL)에 쉼표 (,) 또는 물음표 (?)가 포함되어 있고 여러 열로 분할 된 경우? 시도한 인코딩 => 'base64'첨부 파일. 하지만 여전히 같은 문제에 직면하고 있습니다. 제발 제안 해주세요. – user3265858

+0

\ '을 사용하여 쉼표를 이스케이프 처리하면 해당 CSV를 구문 분석하기가 어렵습니다.'| ' 더 좋을 수도 있습니다. base64를 사용하는 것이 더 좋은 방법입니다. 데이터 라인 "sql_in_base64, time"의 경우, my ($ sql_base64, $ time) = split (/, /, $ _); $ sql = decodebase64 ($ sql_base64); – javamonk

관련 문제