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