2012-07-25 15 views
7

私はテーブルが「よく」あります。これには、app_rate_unitカラム(type:nvarchar)が含まれています。 私の目標は、テーブル内のすべての異なる値を数え、DBMS(MS Server 2005)が私に最も発生している値を与えるようにすることです。SELECT MAX of COUNT

これは私のコードです:

SELECT MAX(app_rate_unit) AS MAX_APP 
    FROM (SELECT app_rate_unit, COUNT(*) AS co 
      FROM dbo.well AS w 
     GROUP BY app_rate_unit 
     ) AS derivedtbl_1 

それでpoblemは私のDBMSが実際に私には最低数を実現していること、しかし、です。

SideQuestion:カウント時に外部キー(テーブル内)とNOT NULL(app_rate_unit内)をフィルタするにはどうすればよいですか?

答えて

15
select top 1 app_rate_unit, count(*) from dbo.well 
group by app_rate_unit 
order by count(*) desc 
+3

同じ最大カウント数を持つ複数の行がある場合は、上位1行を選択するのではなく、最大カウント数を持つすべての最上位行を選択するクエリをどのように書き込む必要がありますか? –

0
select top 1 count(*) as co from dbo.well as w group by app_rate_unit 
order by count(*) desc 
+0

作品数の最大値を使用してクエリを書くことができますが、私はカウント値を望んでいないが、値の名前、それが最も発生しました。私が行ったSideQuestionに関する情報はありますか? – Rufus

+0

彼は、カウント自体ではなく、最も高いカウントでapp_rate_unitを取得したいと思います。私の声明を見てください。 – stb

1

この

SELECT 
     COUNT(app_rate_unit)AS MAX_APP , 
     app_rate_unit 
    FROM 
     dbo.well 
    WHERE 
      app_rate_unit IS NOT NULL 
    GROUP BY 
     app_rate_unit 
    ORDER BY 
      MAX_APP DESC 

を試してみてください上記のスクリプトは、あなたの数やアイテムを提供します。 1つのアイテムだけが最大発生数を持つことがわからない場合は、カウントを変更できます。 PostgreSQLの

+0

は魅力的に機能します。どのようにNULL値をカウントしませんが、stbのステートメントはありますか? – Rufus

+0

は、NULLが他の値より大きくないために発生している可能性があります。 しかし、私はNULLチェック条件を明示的に追加しました。編集したスクリプトを確認してください。 – Narendra

+0

ああええ、右。少し遅れて、ごめんなさい – Rufus

0

たちは

select max(count) from (

select count(id) from Table _name group by created_by,status_id having status_id = 6) as Alias 

として例えば

select max(count) from (

select count(id) from orders group by created_by,status_id having status_id = 6) as foo