Yahoo!知恵袋の投稿データを分析する際、特定のカテゴリごとの月別投稿数を把握したい場合があります。この記事では、投稿ID、ユーザーID、投稿日時、カテゴリを管理するテーブルを想定し、SQLを使って効率的に集計する方法を解説します。
テーブル構造の例
分析対象のテーブルを以下のように想定します。
- post_id: 投稿の一意ID
- user_id: 投稿者のID
- created_at: 投稿日時(DATETIME型)
- category: 投稿のカテゴリ
この構造を基に、カテゴリごとの月別投稿数を集計できます。
基本的な月別集計クエリ
特定のカテゴリ(例: ‘IT’)の投稿数を月ごとに集計するには、MySQLの場合次のように書きます。
SELECT DATE_FORMAT(created_at, '%Y-%m') AS month, COUNT(*) AS post_countFROM postsWHERE category = 'IT'GROUP BY monthORDER BY month;
DATE_FORMAT関数で年月を抽出し、GROUP BYで月ごとに集計しています。
PostgreSQLの場合
PostgreSQLでは、TO_CHAR関数を使って月を抽出します。
SELECT TO_CHAR(created_at, 'YYYY-MM') AS month, COUNT(*) AS post_countFROM postsWHERE category = 'IT'GROUP BY monthORDER BY month;
同様に月ごとに投稿数を集計できます。
複数カテゴリの比較
複数カテゴリを同時に集計する場合は、GROUP BYにcategoryも追加します。
SELECT category, DATE_FORMAT(created_at, '%Y-%m') AS month, COUNT(*) AS post_countFROM postsGROUP BY category, monthORDER BY category, month;
これにより、カテゴリごとに月別の投稿数を取得でき、比較分析が可能です。
まとめ
特定のカテゴリにおける月ごとの投稿数を集計するには、SQLで投稿日時を年月に変換し、GROUP BYで月単位に集計するのが基本です。MySQLならDATE_FORMAT、PostgreSQLならTO_CHARを使い、必要に応じてカテゴリごとの集計も加えることで、柔軟に分析できます。


コメント