• 締切済み

perlでカンマ区切り(CSV)データの集計をしたい

perl初心者です。 個人使用の経費帳簿をCGIで携帯で打ち込むようにしています。 CGIレスキューさんの簡易データベースを改良して作成しました。 フォーム入力→カンマ区切りで保存→項目別検索まで出来ました。 (年,月,日,摘要,入金,出金,備考)という感じです。 これに、月間項目別集計の昨日を追加したいのです。 月間検索で、12月度全部の一覧は出せるようになりました。 が、この1ヶ月間の交通費、書籍代、飲食費・・・の項目別の合計を表示させたいのですが。。。 どのようなプログラムでしょうか?

  • CGI
  • 回答数1
  • ありがとう数0

みんなの回答

  • takbee
  • ベストアンサー率66% (2/3)
回答No.1

連想配列というのを使うのが簡単です。 my %total = (); open(IN, "CSVファイル.csv"); while(<IN>){ (年,月,日,摘要,入金,出金,備考) = split(/,/, $_); # 摘要毎に集計 $count{ 摘要 }+= 入金; } close(IN); #表示 foreach(keys %total){ print "$_,$total{$_}"; }

関連するQ&A

  • CGIでCSVとしてデータ保存→検索して計算後表示

    CGI初心者で大変困っています。。。 現在、CGIで入出金帳簿をつけるようにしています。 フォームで入力してCSVに保存する所まで完成しました。 そこから、FTPでCSVファイルをダウンロードして、CSVを開いて、ExcelとしてSUMとかで縦を足したり、エクセルのオートフォーム等で、科目別に並べ替えたりしています。。。。 これをWeb上で実現し、最後は印刷までしたいのですが。。。 内容は「日付」「摘要」「入金額」「出金額」「備考」です。 serch.cgiを作成して、日付とか摘要で検索できて表示まではできるようになりました。 しかし、金額の合計の求め方やどこにソースを書けばいいのか? まったくわかりません。 どうすれば可能でしょうか? いろんなサイトを見てもわかりませんでした。。。

    • ベストアンサー
    • CGI
  • エクセルの区切り数字を個別に集計する方法を教えてください。

    エクセルでアンケート集計しているのですが、 カンマ区切りの数字から特定の数字の個数を カウントする方法をご存じでしたら教えてください。 現在、複数回答の項目を下記の様に入力。 A4のセル 1,2,3,5,10,15,21 A5のセル 1,2,12,22 例えばA6のセルで、「1」と答えた数をカウントしたい。 複数回答の項目が一桁だと、 A6=COUNTIF("A4:A5","*1*") で集計できたのですが、 今回のように二桁になると A6=COUNTIF("A4:A5","*1*")=5 となってしまいました。 よろしくお願いします。

  • エクセルの項目別集計

    エクセルの基本なのですが、しばらくやってないためどうしても思い出せません。検索でキーワードが適切でなかったのかいくつか試しましたが出てこないので質問させてください。 たとえば支出項目がランダムに発生しているような場合、月間の同一項目ごとの集計とそのランクを出したいのですが、どのようにすればいいでしょうか。(例。支店別の毎日の売り上げの月計とそのランク) 初歩的な質問ですみません。

  • エクセルの集計についてです。

    家計簿的なものを作っています。 ・シート1…普通預金と現金を合わせた表(全ての出入)       ・A1---日付       ・B1---入金       ・C1---出金       ・D1---残高       ・E1---摘要 ・シート2…現金(手許金のみの詳細)       ・項目はシート1と同じ内容 シート1の「摘要」の内容が"手許金"ならシート2へ全ての項目を集計する、という事は可能でしょうか。 エクセルの知識については基本的な事は分かります。

  • 区切り文字をTABにしたい

    CGI-Perl初心者です。 エントリデータを、カンマ区切りテキストデータで保存するようにしていますが、(入門書のファイル操作を参照しながら何とか作れた代物です)後で大きな問題が発生しました。このデータには金額を入れる項目があって、例えば10,000円とカンマを入れると当たり前ですが、区切り文字と判断して10と000円を分けてしまうのです。そこでTAB区切りテキストデータに変更したいのですが、 $data=join(",",変数,変数,変数,変数); としている","の部分をタブにするにはどうしたら良いのでしょうか?

    • ベストアンサー
    • Perl
  • CSVファイルについて

    お世話になります。 カンマ区切りのCSVファイルがあります。 Excelで開くと、以下のようになります。 項目1  項目2  項目3  1    あ,あ   いい  2    うう    ええ 項目2にある「あ,あ」は何故一つのセルにおさまっているのでしょうか。 Excelは内部的に何かを判別して、「これは(「あ,あ」は)カンマが付いてるけど別セルにするのではなく、ひとつのセルにする必要有り」みたいなことをやってるのでしょうか。 ふと疑問に感じ投稿させて頂きました。 ご教授の程、宜しくお願い致します。

  • 家計簿やこづかい帳で返品時の記入の仕方

    家計簿とこづかい帳の中間のような記録をExcelでつけています。項目は以下の通りです。 日付 費目 摘要 入金 出金(現金) 出金(クレジット) 出金(電子マネー) 備考 先日、ドラッグストアにて風邪薬を購入しましたが、家に買い置きがたくさんあったことに気付いて返品しました。 2月2日にクレジットカードで1380円払いましたが、2月4日に返品し、現金で返してもらいました。 こういう場合、帳簿にはどう付けたらいいのでしょうか? 1.費目はどうするのか?(購入時には衛生費として付けています) 2.現金での返金を入金にプラスで書くのか、出金(現金)にマイナスで書くのか、それとも出金(クレジット)にマイナスで書くのか? アドバイスをお願い致します。

  • CSVファイルのダウンロード方法について

    CSVファイルのダウンロード方法についてご教授願います。 (いろんなサイトやFAQをみてきましたが、いまいちわからなかったのでここで質問させていただきます。) 現在、 (1)アンケート項目データ採取.cgi(集計プログラミング込み)…ブラウザ上表示はではcgiにhtmlテンプレートを読み込み ↓ (2)集計.CSVにてデータ集計 ↓ (3)検索.cgiにて(2)集計.CSVのソートや詳細の検索ができる ---------- 他、(4)修正phpがあり、(2)集計.cgiを集計できます。 ---------- (1)、(3)、(4)各ページで<a href="***/***/集計.csv">_CSVダウンロード_</a>なるものをリンク表記したのですが、ダウンロードできません。 どうしたらよいでしょうか?

    • 締切済み
    • CGI
  • 集計表の作り方

    【学年】1年生、2年生、3年生 【クラス】1組、2組、3組 (例文) 生徒に学校生活に関するアンケートを実施しました。 5項目ある質問のうち、3項目は「1~5」段階で評価し記入する。 残りの2項目は「気づき、要望、備考」などの手書き文章。 【集計表】 (1)学年、クラス別に分けたもの (1-1、1-2、1-3、2-1、2-2、2-3、3-1、3-2、3-3組の9つに分ける) (2)「1~5」段階評価の総合計(各1~3項目ごと別に) (3)手書きの「気づき、要望」を抽出する。 簡単な説明で申し訳ないのですが、このような集計表をどのように作ったら良いか思いつきません。 エクセルが良いのか、アクセスが良いのか・・・。 アンケート用紙は出た順からざっくばらんに入力できて、集計表で簡単に操作、まとめれたら良いのですが・・・。 何か良いアドバイスがあれば教えてください。 よろしくお願い致します。

  • DBからタブ区切りのCSVデータを抽出する

    DBからCSVにしてデータを取り出そうと、ネットで検索して みようみまねでやってみました。(下記の場合カンマ区切りですが) タブ区切りで整列したデータを抽出したいのですが、特に、 (4)のように隣合う項目の間がかなり離れていて見えにくい状態で CSVファイルが作成されてしまいます。 (1)のように整列した形で、タブ区切りのCSVデータを抽出するには、 どのようにしたら宜しいのでしょうか? (2)、(3)は、試してみた実行ファイルです。 環境は、oracle10g windowsXPです。 (1)目的の結果の表示------------------------------- 653-5689 ZM05 田中太郎 YOKOHAMAS 4 4  9 097005・・・・・ 以下試してみたbatファイルとsqlで抽出 (2)batファイル---------------------------------- sqlplus ABCD/ABCD@oracle.host1.ser @abc.sql (3)sqlファイル----------------------------------- set echo off set heading off set termout off set pause off set pagesize 0 set trimspool on set feedback off set colsep "," set term off spool hoge.txt select * from T_JUTYU; spool off exit (4)結果--------------------------------- 653-5689 ,ZM05 田中太郎 ,YOKOHAMASI 4, 4, , ,9 ,097005 , 1 ,18 , , , , , 0 ,asahi asahi ,08-12-23,08-12-23, ------------------------------------------------まで結果

専門家に質問してみよう