UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#008 郵便番号データ(12万件)都道府県別登録数ランキング

記入日:2023-01-03 編集日:2023-01-03

SQL見るだけクエリ。今回は前回に続いて、郵便番号データを使ってGROUP BYの練習をしてみようと思います。 全国12万件のレコードを都道府県別でカウントし、都道府県別に何件のレコードがあるか計算してみようと思います。

この記事を読むと(約5分)
10〜20万件程度のデータから、GROUP BY機能を使ってカウントする方法を知ることが出来ます。

全国12万件のレコードが入っている、postal_codeテーブルの、都道府県欄をカウントし、 各道府県別で何件の郵便番号レコードがあるのかを調べてみようと思います。どの都道府県が一番多いのでしょうか?

さていつもの様に、テーブルの情報を取得するSQLに関して、注目する部分は、以下の9~11行目のみです。

SELECT pref, COUNT(pref) AS total FROM postal_code GROUP BY pref ORDER BY total DESC この部分で、データベース内にあるpostal_codeテーブルの、pref欄(都道府県の文字が入っている項目)をカウントしていってます。

try {
    include_once '../model/class.php';

    // データベース接続
    $database = new Database();
    $db = $database->connect();

    // SQLを準備し、パラメータをバインドする
    $query = 'SELECT pref, COUNT(pref) AS total FROM postal_code 
    GROUP BY pref 
    ORDER BY total DESC';
    $stmt = $db->prepare($query);

    // 実行する
    $stmt->execute();

    // 結果を取得する
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    print_r($result);

    // データベースから切断する
    $database->disconnect();

} catch(PDOException $e) {
    echo $e->getMessage();
}

これを実行すると、二次元連想配列で、取得することができます。

            Array
(
    [0] => Array
        (
            [pref] => 北海道
            [total] => 8201
        )

    [1] => Array
        (
            [pref] => 愛知県
            [total] => 7723
        )

    [2] => Array
        (
            [pref] => 京都府
            [total] => 6668
        )

    [3] => Array
        (
            [pref] => 新潟県
            [total] => 5452
        )

    [4] => Array
        (
            [pref] => 兵庫県
            [total] => 5228
        )

    [5] => Array
        (
            [pref] => 東京都
            [total] => 4046
        )

    [6] => Array
        (
            [pref] => 福島県
            [total] => 3963
        )

    [7] => Array
        (
            [pref] => 大阪府
            [total] => 3849
        )

    [8] => Array
        (
            [pref] => 千葉県
            [total] => 3606
        )

    [9] => Array
        (
            [pref] => 宮城県
            [total] => 3414
        )

    [10] => Array
        (
            [pref] => 岐阜県
            [total] => 3374
        )

    [11] => Array
        (
            [pref] => 福岡県
            [total] => 3307
        )

    [12] => Array
        (
            [pref] => 富山県
            [total] => 3260
        )

    [13] => Array
        (
            [pref] => 埼玉県
            [total] => 2971
        )

    [14] => Array
        (
            [pref] => 静岡県
            [total] => 2950
        )

    [15] => Array
        (
            [pref] => 茨城県
            [total] => 2864
        )

    [16] => Array
        (
            [pref] => 石川県
            [total] => 2571
        )

    [17] => Array
        (
            [pref] => 青森県
            [total] => 2516
        )

    [18] => Array
        (
            [pref] => 三重県
            [total] => 2480
        )

    [19] => Array
        (
            [pref] => 神奈川県
            [total] => 2300
        )

    [20] => Array
        (
            [pref] => 福井県
            [total] => 2264
        )

    [21] => Array
        (
            [pref] => 岡山県
            [total] => 2190
        )

    [22] => Array
        (
            [pref] => 広島県
            [total] => 2161
        )

    [23] => Array
        (
            [pref] => 秋田県
            [total] => 2159
        )

    [24] => Array
        (
            [pref] => 岩手県
            [total] => 2075
        )

    [25] => Array
        (
            [pref] => 山形県
            [total] => 1960
        )

    [26] => Array
        (
            [pref] => 奈良県
            [total] => 1938
        )

    [27] => Array
        (
            [pref] => 熊本県
            [total] => 1897
        )

    [28] => Array
        (
            [pref] => 長崎県
            [total] => 1895
        )

    [29] => Array
        (
            [pref] => 大分県
            [total] => 1857
        )

    [30] => Array
        (
            [pref] => 滋賀県
            [total] => 1853
        )

    [31] => Array
        (
            [pref] => 栃木県
            [total] => 1834
        )

    [32] => Array
        (
            [pref] => 山口県
            [total] => 1822
        )

    [33] => Array
        (
            [pref] => 愛媛県
            [total] => 1750
        )

    [34] => Array
        (
            [pref] => 高知県
            [total] => 1697
        )

    [35] => Array
        (
            [pref] => 長野県
            [total] => 1684
        )

    [36] => Array
        (
            [pref] => 和歌山県
            [total] => 1602
        )

    [37] => Array
        (
            [pref] => 群馬県
            [total] => 1501
        )

    [38] => Array
        (
            [pref] => 鹿児島県
            [total] => 1459
        )

    [39] => Array
        (
            [pref] => 徳島県
            [total] => 1426
        )

    [40] => Array
        (
            [pref] => 鳥取県
            [total] => 1397
        )

    [41] => Array
        (
            [pref] => 島根県
            [total] => 1183
        )

    [42] => Array
        (
            [pref] => 山梨県
            [total] => 950
        )

    [43] => Array
        (
            [pref] => 宮崎県
            [total] => 877
        )

    [44] => Array
        (
            [pref] => 佐賀県
            [total] => 872
        )

    [45] => Array
        (
            [pref] => 沖縄県
            [total] => 803
        )

    [46] => Array
        (
            [pref] => 香川県
            [total] => 713
        )

)
			

郵便番号データ(12万件)
都道府県別登録数ランキング

多い順 pref total 割合
1
北海道
8,201件
6.58%
2
愛知県
7,723件
6.20%
3
京都府
6,668件
5.35%
4
新潟県
5,452件
4.38%
5
兵庫県
5,228件
4.20%
6
東京都
4,046件
3.25%
7
福島県
3,963件
3.18%
8
大阪府
3,849件
3.09%
9
千葉県
3,606件
2.89%
10
宮城県
3,414件
2.74%
11
岐阜県
3,374件
2.71%
12
福岡県
3,307件
2.65%
13
富山県
3,260件
2.62%
14
埼玉県
2,971件
2.39%
15
静岡県
2,950件
2.37%
16
茨城県
2,864件
2.30%
17
石川県
2,571件
2.06%
18
青森県
2,516件
2.02%
19
三重県
2,480件
1.99%
20
神奈川県
2,300件
1.85%
21
福井県
2,264件
1.82%
22
岡山県
2,190件
1.76%
23
広島県
2,161件
1.73%
24
秋田県
2,159件
1.73%
25
岩手県
2,075件
1.67%
26
山形県
1,960件
1.57%
27
奈良県
1,938件
1.56%
28
熊本県
1,897件
1.52%
29
長崎県
1,895件
1.52%
30
大分県
1,857件
1.49%
31
滋賀県
1,853件
1.49%
32
栃木県
1,834件
1.47%
33
山口県
1,822件
1.46%
34
愛媛県
1,750件
1.40%
35
高知県
1,697件
1.36%
36
長野県
1,684件
1.35%
37
和歌山県
1,602件
1.29%
38
群馬県
1,501件
1.21%
39
鹿児島県
1,459件
1.17%
40
徳島県
1,426件
1.14%
41
鳥取県
1,397件
1.12%
42
島根県
1,183件
0.95%
43
山梨県
950件
0.76%
44
宮崎県
877件
0.70%
45
佐賀県
872件
0.70%
46
沖縄県
803件
0.64%
47
香川県
713件
0.57%

北海道がトップでした。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。