Загрузка данных


SELECT
    COUNT(*) OVER () AS Всего_строк,
    FIO
FROM (
    WITH t AS (
        SELECT
            REGEXP_SUBSTR(
                REGEXP_REPLACE(
                    NAIMEN,
                    '^((КПП[[:space:]]+[0-9]+|КПП|ПРЕДПРИНИ[А-ЯЁа-яё]*|ПБОЮЛ|ИП|ЧП|ФЛ|[0-9]+)[[:space:]]+)+',
                    '', 1, 0, 'i'
                ),
                '^[А-ЯЁ][А-ЯЁа-яё\-]+'
                || '('
                ||   '[[:space:]]+[А-ЯЁ]\.[[:space:]]*[А-ЯЁ]\.'
                ||  '|[[:space:]]+[А-ЯЁ][А-ЯЁа-яё\-]+'
                ||     '([[:space:]]+[А-ЯЁ][А-ЯЁа-яё\-]+)?'
                ||     '([[:space:]]+(ОГЛЫ|ОГЛУ|КЫЗЫ|УГЛИ|УУЛУ|ГИРЕЙ|ХАН|БЕК|БАЙ))?'
                || ')'
            ) AS FIO
        FROM SH.UCH_VSE
        WHERE
            NAIMEN IS NOT NULL
            
            AND NOT REGEXP_LIKE(NAIMEN,
                '(ООО|ОАО|ПАО|ЗАО|АО|ОДО|ОСБ|АКБ|КБ|КПП|ГУП|МУП|ФГУП|ФУ|КОРПОРЕЙШН|СОФТ|ОБЪЕДИНЕНИЕ|ИНТЕРНЭШНЛ|МЭП|ХОЗ-ВО|РУФПС|НЕВЫЯСНЕ[А-ЯЁа-яё]*|ПАРТНЕР[А-ЯЁа-яё]*|ПАЛАТА|ОАНО|ОБЪЕДИ[А-ЯЁа-яё]*|УЗЕЛ|КОНЦЕРН)',
                'i')
            
            AND NOT REGEXP_LIKE(NAIMEN,
                '(ФОНД|БАНК|КОМПАНИЯ|ПРЕДПРИЯТИЕ|ОБЩЕСТВО|СОЮЗ|ВКЛАДЫ|ГРАЖДАН|КОРПОРАЦИ?|ИНСТИТУТ|ПОДРАЗДЕЛЕНИЕ|СЕТИ|ОТД|МЕДИА|КЛУБ|РАЙПО|УСИБ|ОБЪЕДИНЕНИЕ|ОБЩ-ВО|ОБЩЕСТ[А-ЯЁа-яё]*|ЕДИНЕНИЕ|РОССИЙСК[А-ЯЁа-яё]*|СКАНСКА)',
                'i')
            
            AND NOT REGEXP_LIKE(NAIMEN,
                '(АДМИНИСТРА[А-ЯЁа-яё]*|УПРАВЛЕНИ[А-ЯЁа-яё]*|ДЕПАРТАМЕНТ[А-ЯЁа-яё]*|КОМИТЕТ[А-ЯЁа-яё]*|МИНИСТЕРСТВ[А-ЯЁа-яё]*|ОТДЕЛЕНИЕ|ПОЛИТИЧ[А-ЯЁа-яё]*|ПОСОЛЬСТВО|ПРЕДСТАВИТ[А-ЯЁа-яё]*|ПОДВОРЬЕ|КОНСУЛЬТАЦИЯ|СОВЕТ?)',
                'i')
            
            AND NOT REGEXP_LIKE(NAIMEN,
                '(ФЕДЕРАЛЬН[А-ЯЁа-яё]*|ГОСУДАРСТВЕНН[А-ЯЁа-яё]*|МЕЖДУНАРОДН[А-ЯЁа-яё]*|ОРГАНИЗАЦИ[А-ЯЁа-яё]*|ФИЛИАЛ|ЗАВОД|ПРОИЗВОДСТВЕН[А-ЯЁа-яё]*|ОБЛПО|РАЙОН[А-ЯЁа-яё]*|ГРУППА|СЧЕТ|РЕДАКЦИЯ|НПФ|ГП|ЧАСТЬ|РПЦ|ПИИ|ЭКСПЕДИЦИЯ)',
                'i')
            
            AND NOT REGEXP_LIKE(NAIMEN,
            
                '(ГОСТИНИЦА|ПТИЦЕФАБРИК[А-ЯЁа-яё]*|ФАБРИК[А-ЯЁа-яё]*|ЗАКРЫТ[А-ЯЁа-яё]*|ОТКРЫТ[А-ЯЁа-яё]*|АКЦИОНЕРН[А-ЯЁа-яё]*|МОСКОВСК[А-ЯЁа-яё]*|СНГ|ПАРТИЯ|БЮРО|ЕДИНИЦА|Ф-Л|ТУРИЗМ|УМП|ДОМ|ТОВАРИЩЕСТВО|ФИН|РУПС|МЭИ)',
                'i')
            
            AND NOT REGEXP_LIKE(NAIMEN,
                '(ЖСК|ТСЖ|ВДПО|ГМБХ|МИН?ФИН|ИНДИВИД[А-ЯЁа-яё]*|ЧАСТН[А-ЯЁа-яё]*|ЧП|ИП|РОС-Я|АРТЕЛЬ|МАШИНОСТРО[А-ЯЁа-яё]*|ГОРОД[А-ЯЁа-яё]*|СЕВЕР[А-ЯЁа-яё]*|СИСТЕМС|СОДЕКСО|З-Д|Ф-Т|ЛИМИТЕД|ЮЖНО-[А-ЯЁа-яё]*|ГОC|НЕФТЕБАЗА|ВЭИ)',
                'i')
            
            AND NOT REGEXP_LIKE(NAIMEN,
                '(ФИРМ[А-ЯЁа-яё]*|ЦЕНТР[А-ЯЁа-яё]*|ПРЕДПРИНИМАТЕЛЬ|ОТКРЫТОЕ|ЗАКРЫТОЕ|АКЦИОНЕРНОЕ|ГЛАВН[А-ЯЁа-яё]*|КОМБИНАТ|КООПЕРАТИВ|ДИСТАНЦИЯ|ЖИЛЬЕ|ОТДЕЛЕНИЕ|ЛИЦ?|ХОЗЯЙСТВО|УПРАВ[А-ЯЁа-яё]*|УЧАСТОК|ШАХТА|ИСТЕРН|ПССП)',
                'i')
    )
    SELECT DISTINCT FIO
    FROM t
    WHERE
        REGEXP_LIKE(FIO, '^[А-ЯЁ]', 'c')
        AND REGEXP_LIKE(FIO, '[[:space:]]', 'c')
        AND LENGTH(FIO) BETWEEN 6 AND 40
        AND NOT REGEXP_LIKE(REGEXP_SUBSTR(FIO, '^[^[:space:]]+'), '^[А-ЯЁ]{2,3}$', 'c')
        AND REGEXP_LIKE(
            UPPER(REGEXP_SUBSTR(FIO, '^[^[:space:]]+')),
            '(ОВ|ЕВ|ЁВ|ИН|ЫН|ИЙ|ЫЙ|ОЙ|СКИЙ|ЦКИЙ|СКАЯ|ЦКАЯ|'
            || 'ЕНКО|УК|ЮК|ЧУК|ЩУК|АК|ЯК|ИК|ИЧ|АЯ|ЯЯ|'
            || 'ШВИЛИ|ДЗЕ|ИДЗЕ|ЯН|ЯНЦ|ОГЛЫ|ОГЛУ|КЫЗЫ|УГЛИ|УУЛУ|'
            || 'ГИРЕЙ|ХАН|БЕК|БАЙ|ЕЦ|ЕНОК|КО|ОВА|ЕВА|ИНА|ЫНА|ЁВА|'
            || 'О|А|Е|И|У|Ю|Я)$',
            'i'
        )
    ORDER BY FIO
);