0

テーブル tbl_matrix を埋めようとしています。最初の行には一意の ID が含まれています。最初の列には、固有の郵便番号 (5 つの整数) が含まれています。

もう 1 つのテーブル tbl_list には、「zip_code」、「id」、「occurrence」(約 300000 行) の 3 つの列が含まれています。

ここで、tbl_list に郵便番号と ID の組み合わせが含まれているかどうかを確認し、発生を tbl_matrix に返すアルゴリズム/ループで tbl_matrix を更新/入力したいと考えています。場合によっては、リストに zip_code と ID の同じ組み合わせが 2 つ以上含まれていますが、出現回数は異なります。この場合、オカレンスを合計する必要があります。

私は Windows マシンで MySQL Workbench を使用していますが、Perl/Python/PHP の経験がないため、MySQL だけで問題を解決できれば素晴らしいと思います。

Excel では、tbl_matrix の列ごとに vlookup 関数を使用しますが、これまでは、stackoverflow の他の同様の (My)SQL の例を適応させることができませんでした。あなたが私を助けることができれば、それは素晴らしいことです(それは大学のプロジェクトです). どうもありがとう、ラース。

4

2 に答える 2

0

これは問題を解決するためのアプローチになると思います

create table thetable (id int, zip_code int,  occurrence int);
insert into thetable values (1,1,1), (2,1,2), (1,2,3), (1,2,4);

select id, 
       sum(if(zip_code=1, sum, 0)) zip1,
       sum(if(zip_code=2, sum, 0)) zip2
     from 
       (select id, zip_code, sum(occurrence) sum 
           from tbl_list  
         group by id, zip_code
       ) t
     group by id

結果

| id | zip1 | zip2 |
|----|------|------|
|  1 |    1 |    7 |
|  2 |    2 |    0 |

sqlfiddle のデモ

于 2015-09-03T11:20:49.197 に答える