POSTGRESQL Выбор только дублирующих аккаунтов, имеющих хотя бы один дублирующий номер телефона - PullRequest
0 голосов
/ 24 мая 2018

Я хотел бы получить этот пример данных (POSTGRESQL):

uuid       email       phone_number        
    1   a@gmail.com        111
    2   a@gmail.com        111
    3   a@gmail.com        112
    4   b@gmail.com        222
    5   b@gmail.com        222
    6   c@gmail.com        333
    7   d@gmail.com        444
    8   d@gmail.com        445
    9   d@gmail.com        446

И исключить все:

  1. не повторяющиеся записи электронной почты (в примере uuid = 6)
  2. строк с дублирующимися электронными письмами, но все телефонные номера разные (в примере uuid = 7,8,9)

И mantain:

  1. одна из строк с дублирующимися записями электронной почты и равными всеми телефонными номерами (в примере uuid = 4,5)
  2. одна из строк с дублирующимися записями электронной почты и равными как минимум двумя телефонными номерами (вНапример, uuid = 1,2,3)

Данные результата будут

      email       phone_number        
   a@gmail.com        111
   b@gmail.com        222

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Из того, что вы описываете, вы хотите:

select email, max(phone_number)
from t
group by email
having count(*) > count(distinct phone_number) and
       count(*) > 1;
0 голосов
/ 24 мая 2018

Используйте group by предложение с having

select email, phone_number 
from table t
group by email, phone_number  
having count(*) > 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...