2012-07-25 168 views
7

我有一張桌子「好」。它包含一列app_rate_unit(類型:nvarchar)。 我的目標是統計表中的每一個不同的值,並讓DBMS(MS Server 2005)爲我提供最多的值。SELECT MAX的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? – 2014-12-05 16:40:40

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

作品查詢,但我不想讓計數值,但值的名稱,發生得最多。你有任何關於我構成的SideQuestion的意見嗎? – Rufus 2012-07-25 09:30:08

+0

我想他想要得到最高計數的app_rate_unit,而不是計數本身。看看我的發言。 – stb 2012-07-25 09:30:29

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 

上述腳本會給你計數和項目。如果您不確定只有一個項目的最大發生次數,您可以更改計數。

+0

就像一個魅力。它怎麼不計數NULL值,但是stb的聲明呢? – Rufus 2012-07-25 09:36:08

+0

可能是因爲NULL不大於任何其他值。 但我已明確添加NULL檢查條件。檢查編輯的腳本。 – Narendra 2012-07-25 09:38:44

+0

啊是的,...對。看到有點晚了,對不起 – Rufus 2012-07-25 09:39:40

0

在PostgreSQL,我們可以寫一個使用計數的最大值爲

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