SQL Serverで飼い主ごとの犬の頭数と平均体重を計算する方法

SQL Server

犬テーブルと飼い主テーブルを結合して、各飼い主ごとに飼っている犬の頭数や平均体重を求めたい場合、SQL ServerのGROUP BY句を活用すると簡単に集計できます。この記事では具体例を交えて解説します。

テーブル構造の例

まず前提として、以下のようなテーブルがあるとします。

-- 飼い主テーブル CREATE TABLE Owners (OwnerID INT PRIMARY KEY, OwnerName NVARCHAR(50)); -- 犬テーブル CREATE TABLE Dogs (DogID INT PRIMARY KEY, DogName NVARCHAR(50), OwnerID INT FOREIGN KEY REFERENCES Owners(OwnerID), Weight DECIMAL(5,2));

Ownersテーブルに飼い主情報、Dogsテーブルに犬の情報が格納されています。

飼い主ごとの集計クエリ

飼い主ごとに犬の頭数と平均体重を求めるには、以下のようにGROUP BYを使用します。

SELECT o.OwnerID, o.OwnerName, COUNT(d.DogID) AS DogCount, AVG(d.Weight) AS AvgWeight FROM Owners o LEFT JOIN Dogs d ON o.OwnerID = d.OwnerID GROUP BY o.OwnerID, o.OwnerName ORDER BY o.OwnerID;

このクエリのポイントは以下です。

  • LEFT JOINを使用することで、犬を飼っていない飼い主も結果に含める
  • COUNT(d.DogID)で犬の頭数をカウント
  • AVG(d.Weight)で平均体重を計算
  • GROUP BYで飼い主ごとに集計

実例

例えば、飼い主Aが2匹の犬(体重5.0kgと7.0kg)、飼い主Bが1匹の犬(体重4.5kg)を飼っている場合、クエリ結果は以下のようになります。

OwnerID | OwnerName | DogCount | AvgWeight 1        | 飼い主A    | 2        | 6.0 2        | 飼い主B    | 1        | 4.5

ポイントと応用

・AVG関数やCOUNT関数を他の集計関数に置き換えれば、最大体重や最小体重なども取得可能です。

・WHERE句を組み合わせれば、特定条件の犬だけ集計することもできます。

まとめ

SQL Serverで飼い主ごとに犬の頭数と平均体重を求める場合、LEFT JOINとGROUP BYを活用することで簡単に集計可能です。この方法を応用すれば、他のペット管理や顧客データの集計にも利用できます。

コメント

タイトルとURLをコピーしました