在同一查询中选择ip of Count和Count of DISTINCT ip

And*_*ier 3 mysql sql group-by count distinct

我有这样的表结构:

TABLE NAME : counter

id  |        datetime       |  url  | ip
-------------------------------------------
1   |2013-04-12 13:27:09    | url1  | ip01
2   |2013-04-13 10:55:43    | url2  | ip02
3   |2013-04-14 11:14:12    | url1  | ip03
4   |2013-04-15 23:23:55    | url2  | ip04
5   |2013-05-02 08:34:44    | url1  | ip03
Run Code Online (Sandbox Code Playgroud)

通过智能SELECT查询,我想获取3列:

Distinct URL    |    count of ip            |    count of distinct ip
                |    for each distinct url  |    for each distinct url  
-------------------------------------------------------------------
url1            |    3                      |    2    
url2            |    2                      |    2    

我在下面借助stackoverflow中的这个解决方案提出了我的查询,它给出了我需要的前两列:

SELECT url, COUNT(*) AS total_ip FROM counter GROUP BY url ORDER BY total_ip DESC
Run Code Online (Sandbox Code Playgroud)

但是如何将第3列添加到我的查询中呢?

你能帮我么?

him*_*056 6

正如您自己提到的,您可以使用DISTINCT关键字来获得不同URL的信息.使用COUNT获得的计数IPCOUNT(DISTINCT ID)获得不同的IP每个URLs ^

试试这个:

SELECT DISTINCT URL AS D_URL
      ,COUNT(IP) AS IP
      ,COUNT(DISTINCT IP) AS D_IP
FROM counter
GROUP BY URL
Run Code Online (Sandbox Code Playgroud)

输出:

?????????????????????
? D_URL ? IP ? D_IP ?
?????????????????????
? url1  ?  3 ?    2 ?
? url2  ?  2 ?    2 ?
?????????????????????
Run Code Online (Sandbox Code Playgroud)

看到这个SQLFiddle

  • 有时候,当问题的回答几乎是逐字逐句的时候,我想知道人们的头脑是什么."不同IP的计数"=>`COUNT(DISTINCT IP)` (2认同)
  • 灯亮了,但没人在家 (2认同)