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列添加到我的查询中呢?
你能帮我么?
正如您自己提到的,您可以使用DISTINCT关键字来获得不同URL的信息.使用COUNT获得的计数IP和COUNT(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)