2011-07-11 21 views
1

私はポストを持つテーブルを持っています。 Like(id int、date datetime)。 1か月間に1件のSQLリクエストを1回だけ選択するにはどうすればよいですか?他の集計関数のMySQL集計関数

ありがとうございました!

+1

「過去30日間の平均」または「その暦月の1日の平均」を意味しますか?不完全な月の平均をどのように報告したいですか? –

答えて

3

これはあなたのためにそれを行う必要があります。

select month, avg(posts_per_day) 
from (select day(date), month(date) as month, count(*) as posts_per_day 
     from posts group by 1,2) x 
group by 1 

説明:あなたは集計に集計を行っているので、何のクエリにクエリを行う歩き回るはありません。

  • インナークエリは1日あたりの数を計算し、その月をキャプチャします。
  • 外部クエリは、このカウントを平均して月ごとにグループ化します。
+0

うん。それは動作します。 しかし、セレクトで選択せずにリクエストがあったと確信していました:) しかし、とにかくありがとう! –

0

あなたはこのように月あたりのポストの数を取得することができます:

SELECT COUNT(*) AS num_posts_per_month FROM table GROUP BY MONTH(date); 

は、今、私たちは月の日数が必要となります。

SELECT COUNT(*)/DATEDIFF(MAKEDATE(YEAR(date), MONTH(date)) + INTERVAL 1 MONTH, MAKEDATE(YEAR(date), MONTH(date))) AS avg_over_month 
FROM table GROUP BY MONTH(date); 

これは、平均数を取得します投稿の暦月の1日あたりの投稿数。つまり、今月中の平均は、月末まで引き続き上昇します。今月中に実際の平均値を求めたい場合は、実際の経過日数を取得するために条件を設定する必要があります。