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
user1
和 user3
是 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
我希望能够 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
user1
和 user3
是 select 因为他们在同一天有不同的地址。
user1
因为在 2020-01-01
.
user3
因为在 2020-01-03
.
按名称和 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