简体   繁体   English

试图建立与计数和分组依据的MySQL查询

[英]trying to build mysql query with counts and group by

How can I build a query to do the following? 如何建立查询以执行以下操作?

  1. Grouping by phonenumber 按电话号码分组
  2. Where That Grouping has over 5 different names 该分组具有5个以上不同的名称

data fields: id, phonenumber, name 数据字段:ID,电话号码,姓名

I've tried: 我试过了:

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

but it's timing out, so not sure if that's the right format. 但它正在超时,因此不确定这种格式是否正确。

fake data: 伪造数据:

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

desired output: 所需的输出:

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

It looks like your query works just fine. 看起来您的查询工作正常。 Here is sqlfiddle . 这是sqlfiddle

If you need to get only DISTINCT names then you can do it like this 如果只需要获取DISTINCT名称,则可以这样

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

And here is sqlfiddle for that. 这是sqlfiddle

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM