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

SQL見るだけクエリ#001 GROUP BYとSUMでカテゴリ毎の数を小計

記入日:2022-12-20 編集日:2022-12-20

SQL見るだけクエリ。今回は20件の取得データを、エリアごとの属性でグループ分けし、グループごとの人口合計を計算してみます。SQL的には、GROUP BYという構文を活用します。

この記事を読むと(約3分)
GROUP BYを使って、あるカテゴリ毎にレコードを集約して取得する為に、どのようなSQLを書いているかが分かります。

以下の様なテーブルを用意しました。(テーブル名:table_name)

idname1name2populationimgarea
1横浜市神奈川県3771961dbsample関東
2大阪市大阪府2756807dbsample関西
3名古屋市愛知県2325778dbsample中部
4札幌市北海道1973000dbsample北海道
5福岡市福岡県1631409dbsample九州

同様に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で体裁を整えると、以下のようになります。

全国792市の人口ランキングBEST20
における地方ごとの人口合計

地方 人口
関東
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化のディレクションなどを行っています。