MySQL - 多个组和多个计数

时间:2017-06-08 15:56:14

标签: mysql

我有一个名为urlTraffic的表:

 select count(1) as domain_visits, domain 
 from urlTraffic 
 group by domain 
 order by domain_visits DESC 
 LIMIT 250;

我需要获取所访问的前250个域名的数量,然后查找其访问过的所有位置的总数。

这为我提供了前250个最常访问的域名:

+---------------+-----------------+
| domain_visits |     domain      |
+---------------+-----------------+
|    183002     | google.com      |
|    150181     | facebook.com    |

结果如:

 select distinct(location) 
 from urlTraffic 
 where domain = 'google.com';

我知道这给了我一个位置列表:

+---------------+-------------------------------------+
| domain_visits |     domain      |  number_of_sites  |
+---------------+-------------------------------------+
|    183002     | google.com      |          15       |
|    150181     | facebook.com    |          17       |
|    100002     | t.lkqd.net      |          4        |

但是,我需要结果集如下:

session_destroy();

我知道有一种方法可以执行此查询,但无法弄清楚。

1 个答案:

答案 0 :(得分:1)

这样的东西会返回指定的结果

  SELECT COUNT(1) AS domain_visits
       , ut.domain
       , COUNT(DISTINCT ut.location) AS number_of_sites
    FROM urlTraffic ut 
   GROUP BY ut.domain
   ORDER BY domain_visits DESC
   LIMIT 250

(如果我理解了规范。当第一个查询返回名为“domain”的列时,第一个查询的结果显示为名为“site”的列,这有点令人困惑。这个答案是基于假设对“网站”的引用实际上是为了引用“域名”。)