PostgreSQL Äõ¸® ÀÛ¼º ¹®Àǵ帳´Ï´Ù.

   Á¶È¸ 2998   Ãßõ 0    

갑자기 PostgreSQL로 구성된 DB에서 자료를 추출하여 분석을 해야하는 연구를 해야합니다. ㅠㅠ

인터넷 검색을 통하여 원하는 조건을 검색하는 스크립트(?)는 작성하였습니다.

SELECT DISTINCT person_id
FROM hlud.condition_occurrence
WHERE (condition_source_value LIKE '%A15%'
OR condition_source_value LIKE '%A16%'
OR condition_source_value LIKE '%A17%'
OR condition_source_value LIKE '%A18%'
OR condition_source_value LIKE '%A19%')

hlud 스키마의 condition_occurrence 테이블의 condition_source_value 컬럼에서 A15~A19 단어가 포함된 것중 중복값을 제외한 person_id를 구하였습니다.

질문은 2개입니다.

첫번째로 여기서 검색된 person_id 는 다른 테이블에도 있는데요, 이 person_id가 있는 다른 테이블의 자료를 선택하기 위해서는 어떻게 해야하는지요?

두번째로 선택된 테이블 정보를 R에서 불러와서 분석을 진행할 것인데 어떻게 해야 DB의 자료를 R로 넘길 수 있는지 궁금합니다.

감사합니다.

추신: 연구비에서 제 인건비를 받게 된다면 소정의 사례를 하겠습니다.

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
1. join ÀÌ ÇÊ¿äÇϰڳ׿ä.
2. psql ¿¡¼­ Äõ¸® °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇÏ´Â ¿É¼ÇÀÌ ÀÖÀ»°Ì´Ï´Ù.
select a.person_id,º¸ÀÌ°í°í½ÍÀº Ä÷³¸í
FROM hlud.condition_occurrence A inner join huld.tmp_table B on A.person_id=B.person_id
where (A.condition_source_value LIKE '%A15%' OR A.condition_source_value LIKE '%A16%'
          OR A.condition_source_value LIKE '%A17%'  OR A.condition_source_value LIKE '%A18%'
          OR A.condition_source_value LIKE '%A19%')
group by a.person_id,º¸ÀÌ°í°í½ÍÀº Ä÷³¸í
--------------------------
ÀÌ·±½ÄÀ¸·Î ÇÏ½Ã¸é µÉ°Å°í like º¸´Ù´Â in ('A15','A16') ÀÌ·±½ÄÀÌ Äõ¸®°á°ú´Â ºü¸¦°Ì´Ï´Ù.
¹®Á¦´Â A15, A16 °ªµé ¾ÐµÚ·Î ÀÚ¸®¼ö°¡ °°À¸¸é substring °°Àº ÇÔ¼ö·Î »Ì¾Æ¼­ INÀ» »ç¿ëÇϽñ⠹ٶø´Ï´Ù.
ÂüÁ¶ -> https://lee-mandu.tistory.com/431
substring(condition_source_value,2,3) in ('A15','A16) ÀÌ·±½Ä ¼ýÀÚ·Î Á¶Á¤ °¡´ÉÇÑ ±¸Á¶ÀÎÁö ÆľÇÇÊ¿ä
1. º¸ÅëÀº joinÀ̳ª µÎ°³ Å×À̺íÀ» µ¿½Ã¿¡ select ÇÕ´Ï´Ù.
select A.id, B.id from tablenameA as A, tablenameB as B where A.id=B.id
´ëÃæ ÀÌ·±½ÄÀÌ µÉµí
2. Äõ¸®¹®À» °¡Áö°í ³»º¸³»±â³ª ÀÚ·á »ý¼ºÀ» ÇÒ¼ö ÀÖ´Â ÅøÀÌ ÀÖÀ»°Ì´Ï´Ù

Á¦°¡ ÁÖÁ¾¸ñÀÌ ms sqlÀ̶ó Á¤È®ÇÏÁö´Â ¾Ê°ÚÁö¸¸ ´ë´Ù¼ö µðºñµéº¸Åë Äõ¸®¹®Àº Ç¥ÁؽÄÀ¸·Î ºñ½ÁÇÕ´Ï´Ù
±è»óÀÏ 2019-03
select *
from ´Ù¸¥ Å×À̺í
where person_id in (
SELECT DISTINCT person_id
FROM hlud.condition_occurrence
WHERE (condition_source_value LIKE '%A15%'
OR condition_source_value LIKE '%A16%'
OR condition_source_value LIKE '%A17%'
OR condition_source_value LIKE '%A18%'
OR condition_source_value LIKE '%A19%')
group by person_id
)

¿À¶óŬ¿¡¼­´Â ÀÌ·¸°Ô ó¸®Çß¾ú´Âµ¥...
¾Æ´Ô joinÀ¸·Î..
º¯¼±ÁÖ 2019-03
¸ðµç ºÐµé²² °¨»çµå¸³´Ï´Ù. 1¹ø ¹®Á¦ ÇØ°á¿¡ ¸Å¿ì Å« µµ¿òÀÌ µÇ¾ú½À´Ï´Ù.
1¹ø ¹®Á¦´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ÇØ°áÇÏ¿´½À´Ï´Ù.

select * from hlud.visit_occurrence where person_id in (
SELECT DISTINCT person_id
FROM hlud.condition_occurrence
WHERE substring(condition_source_value, 1, 3) in ('A15', 'A16', 'A17', 'A18', 'A19')
)
     
¾Õ LIKE°¡ ÇÊ¿ä ¾ø³×¿ä.
SELECT *
FROM hlud.visit_occurrence
WHERE person_id IN (
SELECT person_id
FROM hlud.condition_occurrence
WHERE condition_source_value SIMILAR TO 'A1(5|6|7|8|9)%'
)
ÀÌ·±½ÄÀ¸·Î ¹Ù²ãº¸¼¼¿ä.
INDEX°¡ ÀÖ´Ù¸é Äõ¸® ¼Óµµ°¡ »¡¶óÁü.
²À ÇÊ¿äÇÑ °æ¿ì°¡ ¾Æ´Ï¸é °Ë»öÇÏ´Â Ä÷³À» Á¶ÀÛÇÏ´Â ÇÔ¼ö´Â ¾È¾²°í
Äõ¸®¸¦ ÀÛ¼ºÇÏ´Â °ÍÀ» ±ÇÀåÇÕ´Ï´Ù.
SELECT *
FROM ´Ù¸¥Å×À̺í
WHERE person_id IN (
SELECT person_id
FROM hlud.condition_occurrence
WHERE condition_source_value SIMILAR TO '%A1(5|6|7|8|9)%'
)
ÀÌ·±½Ä ÀÔ´Ï´Ù.
Á¦°¡ PostgreSQL´Â »ç¿ëÇØ º¸Áö ¾Ê¾Æ¼­ ÆÐÅÏ°Ë»öÀ» Àß ¸ð¸£´Âµ¥
ÆÐÅÏ°Ë»öÀ» »ç¿ëÇϸé À§ Äõ¸®¸¦ ´õ °£´ÜÇÏ°Ô ¹Ù²Ü¼ö ÀÖÀ» °Å¿¹¿ä.
     
º¯¼±ÁÖ 2019-03
´äº¯ °¨»çÇÕ´Ï´Ù. ¿©±â¼­ °Ë»öÇÏ´Â A15~A19°¡ Çѱ¹Áúº´ºÐ·ùÄÚµåÀÔ´Ï´Ù. Áúº´¿¡ µû¶ó¼­ ½ÃÀÛ ¾ËÆĺªÀÌ AÀÎ °æ¿ìµµ ÀÖÀ¸³ª B, Z µî¿¡µµ Á¸ÀçÇÏ´Â °æ¿ì°¡ À־ ÆÐÅÏ °Ë»ö±îÁö´Â °ï¶õÇÒ °Í °°½À´Ï´Ù. ¾à°£ ´À·Áµµ Á÷°üÀûÀÎ ¹æ¹ýÀ¸·Î Â¥¾ß ³ªÁß¿¡ ´Ù¸¥ ¿¬±¸Àڵ鵵 ¾µ ¼ö ÀÖÀ» °Í °°½À´Ï´Ù.
          
Á÷°üÀûÀ¸·Î ÇϽŴٸé
WHERE condition_source_value SIMILAR TO '(A15|A16|A17|A18|A19)%'
ÀÌ·±½ÄÀ¸·Î Áúº´Äڵ带 ³ª¿­ÇÏ½Ã¸é µË´Ï´Ù.
Midabo 2019-03
°áÇÙ¿¬±¸ÇϽóªºÁ¿ä!
     
º¯¼±ÁÖ 2019-03
Àü°øºÐ¾ß´Â ¾Æ´Ñµ¥ ÀڷḦ ´Ù·ê ¼ö ÀÖ´Ùº¸´Ï ÀÌÂÊÀ¸·Îµµ Çغ¸°Ô µÉ °Í °°½À´Ï´Ù.


QnA
Á¦¸ñPage 1334/5680
2014-05   4946294   Á¤ÀºÁØ1
2015-12   1482964   ¹é¸Þ°¡
2008-11   4627   ¹Î¼ö¿µ
2006-04   6941   ±è¿ë¼ö
2006-05   5574   ±èº´¿ì
2003-10   9640   ÀÌÈ­µ¿
2004-01   8634   ±è½ÂÅÂ
2004-08   7132   ±è±â¹ü(dc3v)
2004-11   6907   À±¸íÈÆ
2005-03   6955   ¼ÛÈ­½Ä
2003-07   9146   ¹æ»óÈ£
2006-04   5586   °û¼±È£
2008-02   5068   µµ°Ç¿ì
2005-05   5666   ÀüÇüÈÆ
2002-09   12826   ±è¿µÃ¤
2005-07   6267   Çѵ¿ÈÆ
2004-02   8225   À̵¿Àç
2004-02   7558   ±èÈÆ
2005-03   6749   ¼Û»óº´
2003-01   10737   ¼­¹ÎÈ£
2003-06   8453   ÀÓÁö¿î
2003-12   9343   °í´ëÁØ