特定カテゴリの月別投稿数をSQLで集計する方法(Yahoo!知恵袋データ例)

SQL Server

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を使い、必要に応じてカテゴリごとの集計も加えることで、柔軟に分析できます。

コメント

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