我有下表:
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的两条记录。
答案 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