一尘不染

在同一查询中选择ip计数和DISTINCT ip计数

sql

我有一个这样的表结构:

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

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

唯一网址| ip数| 不同IP的数量
                | 对于每个不同的URL | 对于每个不同的网址  
-------------------------------------------------- -----------------
url1 | 3 | 2个    
url2 | 2 | 2个

我在的此解决方案的帮助下提出了我的查询,该查询为我提供了我需要的前两列:

SELECT url, COUNT(*) AS total_ip FROM counter GROUP BY url ORDER BY total_ip DESC

但是,如何将第三列也添加到查询中?

你能帮我么?


阅读 244

收藏
2021-03-08

共1个答案

一尘不染

正如您自己提到的那样,您可以使用DISTINCT关键字来获取与众不同URL的。使用COUNT获得的计数IPCOUNT(DISTINCT ID)获得不同的IP每个URL小号

试试这个:

SELECT DISTINCT URL AS D_URL
      ,COUNT(IP) AS IP
      ,COUNT(DISTINCT IP) AS D_IP
FROM counter
GROUP BY URL

输出:

╔═══════╦════╦══════╗
║ D_URL ║ IP ║ D_IP ║
╠═══════╬════╬══════╣
║ url1  ║  3 ║    2 ║
║ url2  ║  2 ║    2 ║
╚═══════╩════╩══════╝
2021-03-08