記入日: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 ) )
多い順 | 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化のディレクションなどを行っています。