3

{id,username,firstname,lastname} を含む Customers のデータベース テーブルがあるとします。

異なる名前のインスタンスがいくつあるかを知りたい場合は、次のようにします。

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

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

複数回出現するファーストネームの数をカウントするにはどうすればよいですか? 疑似 SQL では、次のようになります。

select
    COUNT(
        firstname,
        count(*) as num_occurrences
    )
from 
    Customers 
group by 2 
having num_occurrences > 1;
4

3 に答える 3

6

あなたは正しい考えを持っています:

SELECT COUNT(*)
FROM (
  SELECT firstname
  FROM Customers
  GROUP BY firstname
  HAVING COUNT(*) >= 2
)

サブクエリは、複数回発生した名をカウントします。次に、それらの名をすべて数えます。このHAVING句を使用すると、集計でフィルタリングできます。WHERE集計関数を使用できることを除けば、句に似ています。

于 2009-09-02T17:09:13.840 に答える
2

サブクエリは必要ありません。

試す:

SELECT firstname, COUNT(*)
  FROM Customers
 GROUP BY firstname
HAVING COUNT(*) > 1
 ORDER BY firstname

または、最も代表的な名前で並べ替えます。

SELECT firstname, COUNT(*) AS custcount
  FROM Customers
 GROUP BY firstname
HAVING COUNT(*) > 1
 ORDER BY custcount DESC;
于 2009-09-02T17:12:42.117 に答える
1

これはそれを行います:

select count(username)
  from (select username
          from Customers
         group by username
        having count(*) > 1);
于 2009-09-02T17:06:59.883 に答える