2012-02-11 12 views
4

私はSQLiteテーブルblog_postsを持っています。すべてのブログ投稿はidblog_idです。SQLiteの最大値(COUNT(x))

私はすべてのブログを持っているどのように多くのブログ記事を知りたい場合は、次の

SELECT blog_id, count(1) posts FROM blog_posts group by blog_id 

私はほとんどのポストにブログを持っているどのように多くの記事を知りたい場合、私はどうしますか? (私はblog_idを必要としません。)どうやら、これは違法である:

SELECT max(count(1)) posts FROM blog_posts group by blog_id 

私は何かが欠けていますかなり確信しているが、私はそれを見ていない...

を使用でき

答えて

3

その他のソリューション:

select count(*) as Result from blog_posts 
group by blog_id 
order by Result desc 
limit 1 

私はこの1つまたはサブクエリと1つが、より速く実行思われる解決策はよく分かりません。

+0

ええ、これも私が思いついたものです。それはより簡単に見えるので、より速いと仮定しますが、それは問題ではありません。 Duh =)ありがとう – Rudie

3

サブクエリーここではあなたがそれを行う方法は次のとおりです。

  1. 各ブログ
  2. のためのポストの数はポスト

例の最大数を選択します:

select max(num_posts) as max_posts 
from (
    select blog_id, count(*) as num_posts 
    from blog_posts 
    group by blog_id 
) a 

(サブクエリがであるが(...))。

NB:私はSQLiteのパワーユーザーではないので、これが動作するかどうかわかりませんが、SQLite docsはサブクエリがサポートされていることを示しています。

+0

ニース。最後の "a"を削除するには、SQLiteのようにサブクエリに名前を付ける必要はありません(MySqlのように)。 selectステートメントからblod_idを削除することもできます。 –

+1

*(私は間違って 'blog_id'を間違って入力したとは思えません)*サブクエリにエイリアスをつけるという慣行を採用しました。 –