2

次のことを行うためのクエリを作成するにはどうすればよいですか?

  1. 電話番号によるグループ化
  2. そのグループには5つ以上の異なる名前があります

データフィールド:id、phonenumber、name

私はもう試した:

SELECT count(phonenumber), phonenumber, GROUP_CONCAT(name)
FROM list
group by phonenumber
having count(phonenumber) > 5

しかし、タイムアウトになっているので、それが正しい形式かどうかはわかりません。

偽のデータ:

id | phonenumber | name
1  | 555-5555    | joe
2  | 444-4444    | joe
3  | 555-5555    | joe
4  | 555-5555    | dan
5  | 555-5555    | Ben
6  | 555-5555    | Griff
7  | 555-5555    | Sam
8  | 555-5555    | Jim

必要な出力:

count(phonenumber | phonenumber | GROUP
7                 | 555-5555    | joe, dan, Ben, Griff, Sam, Jim
4

1 に答える 1

1

クエリは問題なく機能しているようです。これがsqlfiddleです。

名前だけを取得する必要がある場合はDISTINCT、次のように実行できます

SELECT COUNT(phonenumber) AS `count`, 
       phonenumber, 
       GROUP_CONCAT(DISTINCT name) AS `names`
  FROM `list` 
 GROUP BY phonenumber 
HAVING COUNT(phonenumber) > 5

そして、これがそのためのsqlfiddleです。

于 2013-02-13T21:40:54.570 に答える