SQL GROUP BY两列但逐个分组

时间:2014-10-15 14:33:45

标签: mysql sql

我有一个简单的表,可以在用户登录时保留所有数据。

id | user_id | ip | date

如您所知,我有来自多个IP的用户和从一个IP登录的用户。 我想从一个IP获取那些日志。所以我需要GROUP BY ip,但也需要具有此IP数据的UNIQUE user_id计数。我想通过从同一IP登录的大多数用户订购它。

问题是ip和user_id都是GROUP BY组。我想我需要insite查询,但我不知道该怎么做。

SELECT *, COUNT(`id`) 
FROM `TABLE` 
GROUP BY `ip`, `user_id` 
ORDER BY COUNT(`id`)

有什么想法吗? :)

2 个答案:

答案 0 :(得分:2)

您正在寻找the DISTINCT keyword

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

答案 1 :(得分:0)

我认为这就是你要找的东西:

SELECT user_id, COUNT(DISTINCT ip) as unique_ip_count
    FROM TABLE
    GROUP BY user_id
    HAVING COUNT(DISTINCT ip)=1