我有一个这样的表结构:
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列:
SELECT
唯一网址| 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
但是,如何将第三列也添加到查询中?
你能帮我么?
正如您自己提到的那样,您可以使用DISTINCT关键字来获取与众不同URL的。使用COUNT获得的计数IP和COUNT(DISTINCT ID)获得不同的IP每个URL小号
DISTINCT
URL
COUNT
IP
COUNT(DISTINCT ID)
试试这个:
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 ║ ╚═══════╩════╩══════╝