犬テーブルと散歩記録テーブルを結合して、各犬の散歩回数を集計する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句で対応できます。


コメント