繁体   English   中英

SQL GROUP BY两列,但一一分组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM