Select 仅当特定列在同一天内有两个或更多不同 ip_address 时才记录

Select records only if specific column has two or more different ip_address within the same day

我希望能够 select 同一天内具有不同 ip_address 的记录,并按 name.

分组

举个例子:

name   |    ip_address    |    date
user1  |    127.0.0.1     |  2020-01-01
user1  |    127.0.0.2     |  2020-01-01
user2  |    127.0.0.1     |  2020-01-01
user2  |    127.0.0.2     |  2020-01-02
user3  |    127.0.0.1     |  2020-01-03
user3  |    127.0.0.4     |  2020-01-03
user3  |    127.0.0.1     |  2020-01-04
user3  |    127.0.0.1     |  2020-01-04

期望的输出:

name   |    date
user1  |    2020-01-01
user3  |    2020-01-03

user1user3 是 select 因为他们在同一天有不同的地址。

user1 因为在 2020-01-01.

有不同的 IP 地址

user3 因为在 2020-01-03.

有不同的 IP 地址

按名称和 dt 使用分组

然后使用count(distinct ip address)检查条件,如果超过一个则选择记录

SELECT name, dt
FROM src
GROUP BY name, dt
HAVING COUNT(DISTINCT ip_address) > 1;

结果

name    dt
user1   2020-01-01
user3   2020-01-03