[英]SQL GROUP BY two columns but grouping one by one
我有一个简单的表,可以在用户登录时保留所有数据。
id
| user_id
| ip
| date
如您所知,我有许多IP登录的用户和一个IP登录的用户。 我想从一个IP中获取日志。 因此,我需要GROUP BY ip
但还需要具有此IP数据的UNIQUE user_id
的计数。 我想按大多数从同一IP登录的用户来订购它。
问题是IP和user_id的GROUP BY组。 我想我需要现场查询,但是我不知道该怎么做。
SELECT *, COUNT(`id`)
FROM `TABLE`
GROUP BY `ip`, `user_id`
ORDER BY COUNT(`id`)
任何想法? :)
您正在寻找DISTINCT
关键字 :
SELECT IP, COUNT(DISTINCT user_ID) AS NumberOfUsers
FROM TABLE
GROUP BY IP
HAVING COUNT(DISTINCT user_ID) > 1 -- this will filter to show only IPs with multiple users
ORDER BY NumberOfUsers DESC
我认为这是您要寻找的:
SELECT user_id, COUNT(DISTINCT ip) as unique_ip_count
FROM TABLE
GROUP BY user_id
HAVING COUNT(DISTINCT ip)=1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.