0

列の最大値を取得しようとしています:

select * from
( select col1, count(*) as cnt from talbe1
group by col1
) dt
where cnt = max(cnt)

正確な値を取得しようとしましたが、次のように機能しました。

where cnt = 5   

また

where cnt > 3  

それはOKだったので、最初のクエリの何が問題なのですか?

編集:そこに入力した数字 (5, 3) は完全にランダムです。cnt の最大数を取得したいと考えています。

4

4 に答える 4

2

HAVING句でこれを行うことができます。たとえば、cnt=3レコードを取得する場合

Select col1, count(*) as cnt from talbe1
Group by col1
Having count(*)=3

手に入れたいならMAX(cnt)

Select Top(1) col1, count(*) as cnt from talbe1
Group by col1
Order by cnt desc
于 2012-11-28T11:10:55.973 に答える
2

集計句はHAVINGセクションに入れる必要があります。ただし、これはそのままのクエリでは機能しません。おそらくやりたかったことは次のとおりです。

select top 1 col1, count(*) as cnt 
from talbe1
group by col1
order by count(*) desc
于 2012-11-28T11:09:16.737 に答える
1

私は解決策を見つけました、
それは非常に簡単でした:(私はもっと集中すべきでした)

select max(cnt) from
( select Fld301, count(*) as cnt from TbC3
group by Fld301
) dt
于 2012-11-28T11:11:40.887 に答える
1

このクエリはどうですか:

select * from
(
    select 
        col1, 
        count(*) as cnt, 
        RANK() OVER(ORDER BY count(*) DESC) AS ran 
    from talbe1 
    group by col1
) dt
where ran=1
于 2012-11-28T11:22:26.407 に答える