SQL-WHERE AGGREGATE> 1
質問
{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
所属していません StackOverflow