記入日:2022-12-20 編集日:2022-12-20
SQL見るだけクエリ。今回は20件の取得データを、エリアごとの属性でグループ分けし、グループごとの人口合計を計算してみます。SQL的には、GROUP BYという構文を活用します。
この記事を読むと(約3分)
GROUP BYを使って、あるカテゴリ毎にレコードを集約して取得する為に、どのようなSQLを書いているかが分かります。
以下の様なテーブルを用意しました。(テーブル名:table_name)
| id | name1 | name2 | population | img | area |
|---|---|---|---|---|---|
| 1 | 横浜市 | 神奈川県 | 3771961 | dbsample | 関東 |
| 2 | 大阪市 | 大阪府 | 2756807 | dbsample | 関西 |
| 3 | 名古屋市 | 愛知県 | 2325778 | dbsample | 中部 |
| 4 | 札幌市 | 北海道 | 1973000 | dbsample | 北海道 |
| 5 | 福岡市 | 福岡県 | 1631409 | dbsample | 九州 |
同様に20レコード(件)
テーブルの情報を取得するSQLに関して、注目する部分は、以下の9~12行目のみです。
SELECT area, SUM(population) AS total FROM table_name GROUP BY area ORDER BY total DESC この部分で、table_nameテーブルのレコードをエリアごとの人口を合計しています。並び順は合計人口の多い順にして取得しております。
try {
include_once '../model/class.php';
// データベース接続
$database = new Database();
$db = $database->connect();
// SQLを準備し、パラメータをバインドする
$query = 'SELECT area, SUM(population) AS total
FROM table_name
GROUP BY area
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
(
[area] => 関東
[total] => 8357995
)
[1] => Array
(
[area] => 関西
[total] => 6532501
)
[2] => Array
(
[area] => 中部
[total] => 4571426
)
[3] => Array
(
[area] => 九州
[total] => 3293402
)
[4] => Array
(
[area] => 北海道
[total] => 1973000
)
[5] => Array
(
[area] => 中国
[total] => 1910882
)
[6] => Array
(
[area] => 東北
[total] => 1099239
)
)
SQLで取得した内容をHTMLとCSSで体裁を整えると、以下のようになります。
| 地方 | 人口 |
|---|---|
| 関東 | 8,357,995 |
| 関西 | 6,532,501 |
| 中部 | 4,571,426 |
| 九州 | 3,293,402 |
| 北海道 | 1,973,000 |
| 中国 | 1,910,882 |
| 東北 | 1,099,239 |
人口数は、3桁のカンマ区切りにする処理を追加しています。
SQLの使いどころ
サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。
SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。
また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。
KK
機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。