Подсчитать пропущенные значения в таблице - PullRequest
0 голосов
/ 06 января 2019

Как в PostgreSQL выбрать недостающие значения из таблицы?

Сводка : Сколько экземпляров string a имеет тип Battle, которые не имеют типа Activity, в которых существует множество экземпляров string a.

См. Изображение ниже. Для запроса, приведенного ниже, я запросил тип Battle, а затем Activity, и строки, выделенные красным , перекрываются. Строки, выделенные синим , представляют собой строки для типа Battle, которые, как мне нужно знать, присутствуют или отсутствуют для типа Activity.

Вопрос : Итак, как из этого примера вернуть все 6 строк, которых нет для типа Activity?

enter image description here

Вот запрос:

select count(vocab_id), vocab_match, player_response, player_response_target, response_id
from (
    select v.id as vocab_id, vocabulary as vocab_match, sq.id as response_id, sq.amatch as response_match, sq.player_response, sq.player_response_target, sq.dialog, sq.dialog_target
    from vocabulary_es v
    right join (
        select trim((regexp_matches(a.player_response_target, '\[t-(.*?)\]', 'g'))[1]) as amatch, a.id, a.player_response, a.player_response_target, a.dialog, a.dialog_target, a.event_type
        from (
            select drena.event_type, r.id, r.player_response, r.player_response_target, d.dialog, d.dialog_target
            from dialogresponses dr
            left join responses r on (r.id = dr.response_id)
            left join dialogs d on (d.id = dr.dialog_id)
            left join dialogresponses_eventsnpcs_all drena on (drena.dialogresponse_id = dr.id)
            where dr.locale_id = 1
            and dr.response_id IS NOT NULL
            and drena.event_type = 'Battle'
        ) as a

        order by a.id asc
    ) as sq
    on (trim(v.vocabulary) ilike trim(sq.amatch))
    where v.vocabulary IS NOT NULL

) as final
group by vocab_id, vocab_match, player_response, player_response_target, response_id
order by response_id asc;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...