質問

{id、username、firstname、lastname}を含む顧客のdbテーブルがあると想像してください

異なる名のインスタンスがいくつあるかを知りたい場合:

select firstname,count(*) from Customers group by 2 order by 1;

   username | count(*)
   ===================
   bob      |   1
   jeff     |   2
   adam     |   5

同じクエリを記述して、複数回出現する名のみを返すにはどうすればよいですか?つまり、上記の例ではjeffとadamの行のみを返します。

役に立ちましたか?

解決

次のように having 句が必要です:

select 
    firstname,
    count(*) 
from Customers 
group by firstname
having count(*) > 1
order by 1

他のヒント

2 by 1 order はひどい、と言うべきです。サポートされている場合は、適切な列名を使用します。これにより、読みやすさが大幅に向上します。

それを念頭に置いて、

select firstname, count(*) c 
from Customers 
group by firstname  
having count(*) > 1 -- Kudos to Shannon
order by c;

これがHAVING句の機能です。これがinformixで機能するかどうかはわかりませんが、試してみましょう:

select firstname, count(*) 
from Customers 
group by firstname
HAVING COUNT(*) > 1
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top