Category: SQL

  • CAST

    자료를 입력할 때에는 결측 값을 미리 확실하게 정해 두어야 한다고 강의들 들은 적이 있다. Vital 테이블을 보니 그게 왜 필요한지 알겠다. 사람마다 빈 칸, ‘.’, ‘-‘으로 여러 방식으로 입력하고 있다. 음수가 나올 수 없는 경우에 음수가 있는 경우도 있는데, 이런 항목도 역시 고려가 필요하다.

    컬럼 속성을 변경하지 않고 다른 속성인 것처럼 처리를 해야할 일이 있을 경우에는 CAST를 사용한다.

    CAST(VS_PULSE_RATE AS NUMERIC)
  • 빈 칸을 NULL로 치환하기

    CDM 구축하는 과정에서 파악한 것으로 vital sign 측정 결과를 입력할 때 다른 항목을 입력하지 않으면 공란으로 처리가 된다는 것 이다. Vital sign을 measurement 테이블에 넣는 과정에서 빈 칸을 그대로 두면 DB 사이즈가 굉장히 커지게 된다. 따라서 공란이 있으면 제거하는 과정이 필요하다. 빈 칸을 찾는 방법 중 하나는 trim과 length를 이용한 것이다. 빈 칸은 trim 을 거 치면 빈 칸에 대한 정보가 소실되게 되고 길이로 바꾸면 0이 된다.

    UPDATE cdm.vital SET vs_height=NULL WHERE LENGTH(TRIM(vs_height))=0;

    Measurement 테이블에 결과를 합칠 때에 다음을 추가하면 값이 있는 항목만 선택되게 된다.

    WHERE vs_height IS NOT NULL
  • psql 스크립트 실행

    psql 명령어를 통해서 스크립트를 실행시키는 것은 생각보다 쉽다.

    sudo -u postgres psql -a -d [DB이름] -f [스크립트]

    -a는 결과 보여주기(echo)이다.

  • count

    특정값이 몇 개 있는지는 count 명령어를 이용하면 되는데 자꾸 숫자만 나오고 어떤게 있는지는 나오지 않았다. 인터넷 서핑을 통해서 찾아본 방법은 다음과 같음. select 뒤에 한 번 써주고, 마지막에 group by 에 또 써주고.

    select drug_source_value_edi_code, count(*) from cdm.drug_exposure where drug_source_value_edi_code in (...) GROUP BY drug_source_value_edi_code;