Как проверить, имеют ли две ячейки одинаковое значение? - PullRequest
0 голосов
/ 07 сентября 2018

Я использую PSQL для запроса базы данных. Я использую две таблицы (d_items и chartevents), которые связаны с помощью itemid.

следующий код

    select 
      subject_id, hadm_id, icustay_id
    , di.itemid, di.label
    , charttime, storetime
    , value, valuenum, valueuom
    , error, resultstatus
from chartevents ce
inner join d_items di
  on ce.itemid = di.itemid
where subject_id BETWEEN 1 AND 10
and di.itemid in
(
  8368, 51
)
order by subject_id, charttime, itemid)

Выходы:

Excel (Ссылка: https://i.imgur.com/trGnwe5.png)

Я только хочу сохранить измерения, которые включают как систолическое, так и диастолическое АД. Так что на самом деле каждый (уникальный) график должен иметь и то, и другое. Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете использовать оконные функции или exists. Итак, вот один из способов:

with t as (
      select subject_id, hadm_id, icustay_id,
             di.itemid, di.label,
             charttime, storetime,
             value, valuenum, valueuom,
             error, resultstatus
      from chartevents ce inner join
           d_items di
           on ce.itemid = di.itemid
      where subject_id between 1 and 10 and
            di.itemid in (8368, 51)
     )
select t.*
from (select t.*,
             sum( (itemid = 51):: int) over (partition by subject_id, charttime) as cnt_51,
             sum( (itemid = 8368):: int) over (partition by subject_id, charttime) as cnt_8368
      from t
     ) t
where cnt_51 > 0 and cnt_8368 > 0
order by subject_id, charttime, itemid;

Я использую itemid для идентификации двух измерений. Возможно, вам придется использовать like на label.

0 голосов
/ 07 сентября 2018

Я разработчик, который использует Oracle, но я думаю, что могу предоставить некоторые концепции, чтобы помочь вам. Глядя на вашу таблицу, я думаю, что таблица d_items - это просто метка для идентификации данные с систолическими и диастолическими измерениями. Таким образом, мы можем игнорировать таблицу d_items.
Я думаю, что ваша цель - отобразить систолическое АД и диастолическое АД на одной записи. То, что вы хотите сделать, это присоединиться к настольным турнирам против себя. Я предполагаю, что subject_id и chartime определит уникальный набор записей. Глядя на выходные столбцы, выглядит одинаковое значение и valuenum представляют одни и те же данные.

Ваше соединение с таблицей будет выглядеть примерно так: Выберите ... systol.value, diastol.value ...... из чартовца систол присоединиться к чартовенту диастол на (systol.subject_id = диастол.subject_id и systol.charttime = diastol.charttime) где ...

Оставшуюся часть работы я оставлю вам для завершения запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...