powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск дублей
12 сообщений из 12, страница 1 из 1
Поиск дублей
    #39754777
*Ann*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Есть такой запрос:
select
ph.orponid as GlobalID
, sys.external_id as "HouseID"
, ph.adr_adm_ter as "Адрес"
from
edw_prod.edw_ods.t_000148_ent_as_house ph
JOIN edw_prod.edw_ods.t_000148_ent_id_vs_o_add sys on ph.id = sys.house_id and sys.system_id = 354541532

where 1=1
and ph.livestatus = 1
and ph.mrf_id = 354858663--Сибирь
and ph.parent_id is not null
order by ph.orponid;

Как его преобразовать так, чтобы вывести только строки с повторяющимися идентификаторами sys.external_id?
...
Рейтинг: 0 / 0
Поиск дублей
    #39754780
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Ann*,

как вариант (внесенные мною изменения - выделены цветом...):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select * 
  from (
         select ph.orponid as GlobalID
              , sys.external_id as "HouseID"
              , ph.adr_adm_ter as "Адрес"
              , count() over(partition by sys.external_id) as x_cnt
           from edw_prod.edw_ods.t_000148_ent_as_house ph 
           JOIN edw_prod.edw_ods.t_000148_ent_id_vs_o_add sys
             on ph.id = sys.house_id and sys.system_id = 354541532
          where 1=1
            and ph.livestatus = 1
            and ph.mrf_id = 354858663--Сибирь
            and ph.parent_id is not null
       ) v
 where x_cnt > 1
 order by GlobalID;
...
Рейтинг: 0 / 0
Поиск дублей
    #39754781
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна*Ann*,

как вариант (внесенные мною изменения - выделены цветом...):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select * 
  from (
         select ph.orponid as GlobalID
              , sys.external_id as "HouseID"
              , ph.adr_adm_ter as "Адрес"
              , count(1) over(partition by sys.external_id) as x_cnt
           from edw_prod.edw_ods.t_000148_ent_as_house ph 
           JOIN edw_prod.edw_ods.t_000148_ent_id_vs_o_add sys
             on ph.id = sys.house_id and sys.system_id = 354541532
          where 1=1
            and ph.livestatus = 1
            and ph.mrf_id = 354858663--Сибирь
            and ph.parent_id is not null
       ) v
 where x_cnt > 1
 order by GlobalID;

конечно же, в count-е должно быть хоть что-то ("звездочка", "единица" или в чем вам там считать удобнее ;) )
...
Рейтинг: 0 / 0
Поиск дублей
    #39754786
*Ann*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

Большое спасибо за помощь. Работает. Но почему-не анализирует фильтр по системе sys.system_id = 354541532, выдаёт дубли во всех системах.
...
Рейтинг: 0 / 0
Поиск дублей
    #39754788
*Ann*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

Ошиблась, все работает. Ещё раз большое спасибо!
...
Рейтинг: 0 / 0
Поиск дублей
    #39758211
*Ann*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Подскажите еще, пожалуйста, как сделать вывод дублирующих записей по двум столбцам (в моем случае по полям Широта и Долгота).
Вот запрос , который выводит адреса с координатами:
select eah.orponid as GlobalID
, eah.adr_adm_ter as Адрес
, hc.latitude as Широта
, hc.longitude as Долгота
from
CHD.ent_as_house eah LEFT OUTER JOIN chd.house_coordinates hc
on eah.coordinates_id = hc.id
where 1=1
and eah.livestatus = 1
and eah.parent_id is not null
order by eah.orponid;

И я посчитала, что по координатам есть дублирующие записи:
select hc.latitude
, hc.longitude
, count(*)
from public.house_coordinates as hc
group by hc.latitude, hc.longitude
having count(*) > 1

Вот в первом запросе мне надо вывести только дубли. Как это сделать? С over partition by у меня не получилось с двумя столбцами.
...
Рейтинг: 0 / 0
Поиск дублей
    #39758212
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Ann*,

показывайте, как делали...

З.Ы.
Подсказка (не вдаваясь в тонкости терминологии и технические детали): считайте для себя, что в аналитических функциях конструкция "PARTITION BY" - это аналог конструкции "GROUP BY" агрегатного запроса...
Соответственно, если в агрегатном запросе дубли искали через group by hc.latitude, hc.longitude , то и в аналитическом нужно указывать PARTITION BY hc.latitude, hc.longitude
...
Рейтинг: 0 / 0
Поиск дублей
    #39758215
*Ann*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовала по аналогии с предыдущим запросом:
select *
from (
select eah.orponid as GlobalID
, eah.adr_adm_ter as Адрес
, hc.latitude as Широта
, hc.longitude as Долгота
, count() over(partition by hc.latitude, hc.longitude) as x_cnt

from
public.ent_as_house eah LEFT OUTER JOIN public.house_coordinates hc
on eah.coordinates_id = hc.id
where 1=1
and eah.livestatus = 1
and eah.mrf_id =
(select id from public.ent_rf_rtk where name = 'МРФ Центр')
and eah.parent_id is not null
order by eah.orponid
) v
where x_cnt > 1
order by hc.latitude, hc.longitude;

Выдает ошибку ERROR: 42809: count(*) must be used to call a parameterless aggregate function
...
Рейтинг: 0 / 0
Поиск дублей
    #39758216
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*Ann*,

Код: sql
1.
, count(*) over(partition by hc.latitude, hc.longitude) as x_cnt
...
Рейтинг: 0 / 0
Поиск дублей
    #39758217
*Ann*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь ошибка missing from-clause entry for table 'hc'.
В from у меня другая таблица. А с hc идёт соединение по left join
...
Рейтинг: 0 / 0
Поиск дублей
    #39758246
*Ann*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашла, в чем была ошибка. Спасибо большое за помощь!
...
Рейтинг: 0 / 0
Поиск дублей
    #39758528
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топик Ань.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Поиск дублей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]