SQL Serverで犬と散歩記録を結合して散歩回数を集計する方法

SQL Server

犬テーブルと散歩記録テーブルを結合して、各犬の散歩回数を集計するSQLは、JOINとCOUNT関数を組み合わせることで簡単に実現できます。本記事では、SQL Serverでの具体例とともに、初心者でも理解できるように解説します。

基本的なテーブル構造の例

例として、犬テーブルと散歩記録テーブルを用意します。

犬テーブル:Dog(DogID, DogName)
散歩記録テーブル:Walk(WalkID, DogID, WalkDate)

ここで、DogIDをキーに両テーブルを結合します。

JOINとCOUNTを使用した集計

各犬の散歩回数を求めるには、INNER JOINやLEFT JOINを使用して結合し、COUNT関数で集計します。

具体的なSQL例。

SELECT d.DogName, COUNT(w.WalkID) AS WalkCount
FROM Dog d
LEFT JOIN Walk w ON d.DogID = w.DogID
GROUP BY d.DogName
ORDER BY d.DogName;

このSQLでは、LEFT JOINを使用することで、散歩記録が無い犬も結果に表示されます。COUNT関数で散歩回数をカウントし、GROUP BYで犬ごとに集計しています。

INNER JOINとの違い

INNER JOINを使用すると、散歩記録が存在する犬のみが結果に表示されます。散歩未経験の犬も含めたい場合はLEFT JOINを使うのがポイントです。

例:
SELECT d.DogName, COUNT(w.WalkID) AS WalkCount
FROM Dog d
INNER JOIN Walk w ON d.DogID = w.DogID
GROUP BY d.DogName;

応用例:日付範囲で集計

特定の期間内の散歩回数を集計したい場合、WHERE句を追加します。

例:
SELECT d.DogName, COUNT(w.WalkID) AS WalkCount
FROM Dog d
LEFT JOIN Walk w ON d.DogID = w.DogID AND w.WalkDate BETWEEN ‘2026-01-01’ AND ‘2026-03-31’
GROUP BY d.DogName;

まとめ

SQL Serverで犬テーブルと散歩記録テーブルを結合して散歩回数を集計する場合、JOINとCOUNT関数を組み合わせることで簡単に実現できます。LEFT JOINを使うと散歩記録がない犬も含めて集計可能で、期間を限定した集計もWHERE句で対応できます。

コメント

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