'프로그램 사용 > postgreSQL' 카테고리의 다른 글
스칼라 서브쿼리(scalar subquery) (0) | 2020.01.04 |
---|---|
array_cat() (0) | 2019.12.30 |
left join이 능사는 아니다 (0) | 2019.12.24 |
dense_rank() (0) | 2019.12.22 |
postgresql 의 반복문을 이용한 문자열 치환하기 (0) | 2019.12.20 |
스칼라 서브쿼리(scalar subquery) (0) | 2020.01.04 |
---|---|
array_cat() (0) | 2019.12.30 |
left join이 능사는 아니다 (0) | 2019.12.24 |
dense_rank() (0) | 2019.12.22 |
postgresql 의 반복문을 이용한 문자열 치환하기 (0) | 2019.12.20 |
아무생각 없이 inner join은 교집합
left join은 왼쪽 영역대로 쓰는 거라고 생각을 해서 수가 변하지 않을꺼라고 생각했는데
간간히 늘어나는 경우가 있어 이해를 못하고 distinct나 group by로 억제(!) 했었는데
이런 발상 자체가 데이터 다루는 관점에서는 너무나 무책임하고 위험하다는걸 이제야 깨달음
아무튼.. 1:N 관계의 테이블을 left join 하면 행이 뻥튀기 된다.
반대로 말하면 left join 전에는 반드시 1:1 관계인지 확인을 해야 하고
최소한 1:N은 아닌것을 확인하고 N:1이거나 1:1 인지 확인하고 써야 한다.
array_cat() (0) | 2019.12.30 |
---|---|
테이블 내 두 컬럼 값 바꾸기(임시 변수) (0) | 2019.12.24 |
dense_rank() (0) | 2019.12.22 |
postgresql 의 반복문을 이용한 문자열 치환하기 (0) | 2019.12.20 |
postgresql loop 반복문 (0) | 2019.12.20 |
row_number()로 하면 무조건 등수가 생기는데
동일 값을 가지는 부분을 묶어서 1,2,3 이런식으로 group 등수를 매기기 위해서는
row_number() 대신
dense_rank()를 쓰면 되는 듯?
테이블 내 두 컬럼 값 바꾸기(임시 변수) (0) | 2019.12.24 |
---|---|
left join이 능사는 아니다 (0) | 2019.12.24 |
postgresql 의 반복문을 이용한 문자열 치환하기 (0) | 2019.12.20 |
postgresql loop 반복문 (0) | 2019.12.20 |
sql array any all (0) | 2019.12.20 |
정상작동 되는지 전체가 들어간지는 아직 몰라서 확인이 필요함.
예전에 3 letter를 1letter로 replace를 이용한 건 편리했는데
1letter를 3letter로 바꾸는건 오류가 있어서 못쓰다가, 이번에 반복문을 이용해서 한번 시도해 봄
DO $$
DECLARE
hgvspthreeletter text := 'Thr790Met';
hgvsponeletter text := 'T790Mfs';
hgvslen integer := length(hgvsponeletter);
i integer := 1;
result text;
conv text;
res text;
BEGIN
-- RAISE NOTICE '%의 길이는 %이며 원래는 % 임',
-- hgvsponeletter, hgvslen, hgvspthreeletter;
while i<= hgvslen loop
select substring(hgvsponeletter, i, 1) into result;
SELECT i+1 INTO i;
SELECT case
when result = 'A' then 'Ala'
when result = 'B' then 'Asx'
when result = 'C' then 'Cys'
when result = 'D' then 'Asp'
when result = 'E' then 'Glu'
when result = 'F' then 'Phe'
when result = 'G' then 'Gly'
when result = 'H' then 'His'
when result = 'I' then 'Ile'
when result = 'J' then 'Xle'
when result = 'K' then 'Lys'
when result = 'L' then 'Leu'
when result = 'M' then 'Met'
when result = 'N' then 'Asn'
when result = 'O' then 'Pyl'
when result = 'P' then 'Pro'
when result = 'Q' then 'Gln'
when result = 'R' then 'Arg'
when result = 'S' then 'Ser'
when result = 'T' then 'Thr'
when result = 'U' then 'Sec'
when result = 'V' then 'Val'
when result = 'W' then 'Trp'
when result = 'X' then 'X'
when result = 'Y' then 'Tyr'
when result = 'Z' then 'Glx'
when result = '*' then 'Ter' -- '*'
else result
end INTO conv;
SELECT concat(res, conv) into res;
-- raise notice '% %' ,conv,res;
end loop;
raise notice '%' ,res;
END $$;
알림: Thr790Metfs DO Query returned successfully in 72 msec. |
[링크 : https://www.hgvs.org/mutnomen/codon.html]
[링크 : http://www.gisdeveloper.co.kr/?p=4621]
[링크 : http://www.gisdeveloper.co.kr/?p=4573]
[링크 : https://w3resource.com/PostgreSQL/substring-function.php]
left join이 능사는 아니다 (0) | 2019.12.24 |
---|---|
dense_rank() (0) | 2019.12.22 |
postgresql loop 반복문 (0) | 2019.12.20 |
sql array any all (0) | 2019.12.20 |
postgres 동일 컬럼명 에러 (0) | 2019.12.20 |
디버깅 방법은 좀 찾아 봐야겠지만..
일단 텍스트에 대해서 length로 반복 횟수를 정하고
substr()로 특정 위치의 값 하나를 빼내서
다른 변수에 치환해서 넣어주면 원하는 기능을 구현을 할 수 는 있을 것으로 보인다.
[링크 : http://www.gisdeveloper.co.kr/?p=4573] <<
[링크 : http://www.gisdeveloper.co.kr/?p=4621]
[링크 : http://www.postgresqltutorial.com/plpgsql-loop-statements/]
dense_rank() (0) | 2019.12.22 |
---|---|
postgresql 의 반복문을 이용한 문자열 치환하기 (0) | 2019.12.20 |
sql array any all (0) | 2019.12.20 |
postgres 동일 컬럼명 에러 (0) | 2019.12.20 |
sql scan과 index (0) | 2019.12.19 |
배열내의 내용을 검색하는 거라고 들었지만
실제로 내용을 보면 그런 용도와는 좀 다른 느낌.
[링크 : https://www.w3schools.com/sql/sql_any_all.asp]
[링크 : https://stackoverflow.com/questions/34627026/in-vs-any-operator-in-postgresql]
postgresql 의 반복문을 이용한 문자열 치환하기 (0) | 2019.12.20 |
---|---|
postgresql loop 반복문 (0) | 2019.12.20 |
postgres 동일 컬럼명 에러 (0) | 2019.12.20 |
sql scan과 index (0) | 2019.12.19 |
postgresql 에서 ,로 구분되는 문자열로 내보내기 (0) | 2019.12.18 |
오류: "array_agg" 칼럼을 하나 이상 지정했음
에러만 봐서는.. array_agg 컬럼을 여러개 써서 그런거 같은데
(한 쿼리에 array_agg를 여러번 쓰면 안되는 것으로 이해함)
정작 에러코드를 찾아가보면 컬럼명이 동일한게 존재하기 때문에 발생하는 에러라고 해석된다.
array_agg라는 이름으로 컬럼명이 생성되다 보니 그런건데.. 해석이 아무리봐도 이상한 듯..
결론은.. as로 다른 이름을 지정해주면 끝.
DB2 SQL-Error: -121 SQLState: 42701 Short Description: THE COLUMN IS IDENTIFIED MORE THAN ONCE IN THE INSERT OR UPDATE OR SET TRANSITION VARIABLE STATEMENT The same column 'name' is specified more than once, either in the list of object columns of an INSERT statement, in the SET clause of an UPDATE statement, or in a SET transition variable statement. System action: The statement cannot be executed. No data was inserted or updated in the object table. Programmer response: Correct the syntax of the statement so that each column name is specified only once. |
[링크 : http://www.sqlerror.de/db2_sql_error_-121_sqlstate_42701.html]
postgresql loop 반복문 (0) | 2019.12.20 |
---|---|
sql array any all (0) | 2019.12.20 |
sql scan과 index (0) | 2019.12.19 |
postgresql 에서 ,로 구분되는 문자열로 내보내기 (0) | 2019.12.18 |
postgres create view / materialized view (0) | 2019.12.15 |
sql array any all (0) | 2019.12.20 |
---|---|
postgres 동일 컬럼명 에러 (0) | 2019.12.20 |
postgresql 에서 ,로 구분되는 문자열로 내보내기 (0) | 2019.12.18 |
postgres create view / materialized view (0) | 2019.12.15 |
sql not exists (0) | 2019.12.09 |
말이 어렵다 -ㅁ-
array_agg()를 통해서 합치게 되면
{1,2,3} 이런식으로 중괄호가 붙게 되는데
이걸 없애고 순수하게(?)
1,2,3 으로만 출력하게 하는 방법
아래와 같이 하면 array_agg에 의해 배열로 {}로 붙게 되고 array_to_string()에 의해
{}가 제거된 채 원하는 의도대로 1,2,3 으로 출력되게 된다.
array_to_string(array_agg(DISTINCT datas),',') |
postgres 동일 컬럼명 에러 (0) | 2019.12.20 |
---|---|
sql scan과 index (0) | 2019.12.19 |
postgres create view / materialized view (0) | 2019.12.15 |
sql not exists (0) | 2019.12.09 |
sql filter() over() (0) | 2019.12.09 |
create view는 먼가.. 막 복잡할줄 알았는데 별 차이가 없네?
query 부분을 ' '로 감싸면서 안에 있는 '를 막 '''로 치환해줘야 할 줄 알았는데..
[링크 : https://www.postgresql.org/docs/9.2/sql-createview.html]
[링크 : https://blog.naver.com/jdub7138/220863929987]
materialzied view 라는게 pgadmin에서 본게 기억나서 찾아보니
단순하게 메모리에 생겨나는게 아닌 물리적으로 공간을 차지하는 뷰라고 한다.
오라클에서 처음 도입되었다고 하는데. 그건 나에게 중요한건 아니니..
[링크 :https://ko.wikipedia.org/wiki/구체화_뷰]
[링크 : http://www.gurubee.net/lecture/1857]
postgres 9.3 이후버전 부터 사용이 가능한 것 같고
(다만 9.3 버전은 unsupportted 버전으로 지정되었지만.. 여기서 unsupportted는 LTS등의 기간이 끝난거겠지?)
view랑은 아무튼 구분되어서 저장되는 것으로 보인다.
[링크 : https://www.postgresql.org/docs/9.3/rules-materializedviews.html]
sql scan과 index (0) | 2019.12.19 |
---|---|
postgresql 에서 ,로 구분되는 문자열로 내보내기 (0) | 2019.12.18 |
sql not exists (0) | 2019.12.09 |
sql filter() over() (0) | 2019.12.09 |
sql 표준함수 종류 (0) | 2019.12.09 |