确定mysql中两个字段的唯一组合的计数

时间:2014-06-16 09:25:29

标签: mysql sql

我有下表:

Company        webdomain
-------        ---------
IBM            ibm.com
IBM            ibm.co.uk
IBM            ibm.in
CSC            csc.com
Infosys        infy.com
Intel          intel.com
Intel          intel.co.in

问题:有多少公司有多个网站?

如何将其表示为SQL查询?

我尝试了以下内容:

select count(distinct company, webdomain) 
from table 
where company = 'IBM';

这使得IBM的Web域数量为3,但是,当我想要查找具有以下查询的所有公司时产生相同的效果:

select company, count(distinct company, webdomain) 
from table;

我得到一个列,这是公司的空值和一些无关的计数。

我知道这可以解决问题:

select company, count(distinct company, webdomain) 
from table 
where company in (select distinct company from table);

但是这最后一个查询需要太长时间。是否有更好的方式来实现它。

编辑:公司,网站域名组合可能不是唯一的。例如:IBM,ibm.com的两条记录。

4 个答案:

答案 0 :(得分:2)

你可以追加" Group by"在您的查询中获得所需的结果: -

SELECT 
  `company`, `webdomain`, COUNT(DISTINCT `company`, `webdomain`) 
AS 
  `count_of_unique_combination` FROM `info` 
GROUP BY 
  `company`;

输出为: -

COMPANY     WEBDOMAIN   COUNT OF UNIQUE COMBINATION
CSC         csc.com     1
IBM         ibm.com     3
Infosys     infy.com    1
Intel       intel.com   2 

答案 1 :(得分:0)

使用GROUP BY获得所需的结果。像:

select company, webdomain, count(*) from table group by company, webdomain;

答案 2 :(得分:0)

尝试使用GROUP BY子句,如

SELECT company,
       count(*)
FROM TABLE
GROUP BY company,
         webdomain;

答案 3 :(得分:0)

按照 问题:有多少公司有多个网站?

您可以使用以下查询

select 
Company,
count(*) as num_subdomains
from 
your_table 
group by Company
having num_subdomains > 1