아래와 같이 하면 값이 없는 애는 NULL로 표기된채로 ,로 여러개 쭈르르르륵 나온다.

NULL을 해주는 이유는 NULL일 경우 값을 아예 생략해서 몇개의 값을 합친건지 알수가 없기 때문.

어떻게 보면.. DB를 DB답게 안쓰는 방법인데

여러개의 레코드를 합치다 보면 NULL의 위치가 서로 다를테니 형식을 맞추기 위함이라고 해야하려나?

 

string_agg(COALESCE(합칠변수::text,'NULL'), ',')

---

 

ms sql server 에서는 isnull로 값없는건 빠지지 않도록 해주어야 한다고..

[링크 : https://docs.microsoft.com/ko-kr/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017]

[링크 : https://xshine.tistory.com/205]

[링크 : https://dbrang.tistory.com/1289]

 

COALESCE() 라는 함수를 지원한다고.

[링크 : http://www.postgresqltutorial.com/postgresql-isnull/]

 

The COALESCE function returns the first of its arguments that is not null. Null is returned only if all arguments are null. It is often used to substitute a default value for null values when data is retrieved for display, for example:

This returns description if it is not null, otherwise short_description if it is not null, otherwise (none).

Like a CASE expression, COALESCE only evaluates the arguments that are needed to determine the result; that is, arguments to the right of the first non-null argument are not evaluated. This SQL-standard function provides capabilities similar to NVL and IFNULL, which are used in some other database systems.

[링크 : https://www.postgresql.org/docs/9.5/functions-conditional.html]

 

[링크 : https://stackoverflow.com/.../how-to-concatenate-strings-of-a-string-field-in-a-postgresql-group-by-query]

[링크 : https://blog.gaerae.com/2015/09/postgresql-multiple-rows-and-json-or-string.html]

 

2019/09/08 - [프로그램 사용/postgreSQL] - sql 여러행을 하나로 합치기 concat

 

+

json_agg(expr) 은 delimiter 없이 JSON ARRAY 타입으로 리턴해준다.

json_agg는 string_agg와는 다르게 null을 기본으로 출력해준다.

 

+

DISTINCT를 string_arr 안에서 사용이 가능하다.

[링크 : https://yahwang.github.io/posts/46]

'프로그램 사용 > postgreSQL' 카테고리의 다른 글

postgresql transaction begin / commit / rollback  (0) 2019.09.24
sql 문 계산하기  (0) 2019.09.24
join where와 on  (0) 2019.09.18
복수 컬럼에 대한 inner join  (0) 2019.09.18
postgresql update  (0) 2019.09.18
Posted by 구차니

 

[링크 : https://www.cyberciti.biz/faq/linux-unix-ssh-proxycommand-passing-through-one-host-gateway-server/]

[링크 : https://unix.stackexchange.com/questions/311650/forward-x11-through-two-ssh-tunnels]

 

 

+

예전에 내용 확인하니  X11Forwarding  옵션만 양쪽으로 되어있으면 문제 없는듯

그런 경우에도 할수 있는 방법인가 확인이 필요할듯

[링크 : https://minimonk.net/2143]

 

+

가장 위에 링크는 nc 명령을 이용해서 먼가 하려고 하는데

잘안된다. 쓰는법을 좀더 봐야 할 듯

 

+

[링크 : http://qgp9.github.io/blog/2016/03/26/ssh-proxy-jump-host]

'프로그램 사용 > ssh scp sftp' 카테고리의 다른 글

reverse ssh  (0) 2021.01.03
ssh blowfish  (0) 2019.09.24
ssh remote port forwarding  (0) 2019.01.28
reverse SSH  (0) 2018.05.14
rpi vpn client  (0) 2018.05.11
Posted by 구차니

WHERE는 JOIN에 붙는게 아니라 유사해 보이지만 다른 결과를 가져오니 주의가 필요해 보인다.

원래는 JOIN ... ON 으로 조건식을 해서 붙는 듯

 

[링크 : https://eddyplusit.tistory.com/52]

[링크 : https://blog.leocat.kr/notes/2017/07/28/sql-join-on-vs-where]

 

+

2019.09.24

inner join 에서는 where나 on이나 동일한건가?

[링크 : https://sarc.io/index.php/mariadb/1303-sql-join-on-where]

[링크 : http://www.sqler.com/bSQLQA/140801]

 

ON절에 조건을 주면, 테이블을 합칠 때 조건이 걸려서 하나의 가상테이블(join된 결과)이 만들어집니다. 그와 반대로 WHERE절에 조건이 걸리면, 다 만들어진 테이블을 다시 훑으면서 해당 조건에 맞는 결과물을 반환하는 게 됩니다. 이는 OUTER JOIN에서 확연하게 차이를 보입니다.

[링크 : https://viewa.tistory.com/44]

Posted by 구차니

1개 테이블에 다른 테이블의 값이 여러개 있어서

어떻게 한번에  join이 가능한지 보는데.. 별거 없네

JOIN ON에 여러개 붙이면 된다.

 

[링크 : https://stackoverflow.com/questions/26916741/how-to-join-two-tables-by-multiple-columns-in-sql/26916803]

'프로그램 사용 > postgreSQL' 카테고리의 다른 글

string_agg() + COALESCE() + DISTINCT  (0) 2019.09.23
join where와 on  (0) 2019.09.18
postgresql update  (0) 2019.09.18
postgresql 정수형에 "NULL"이 null로 인식을 못할때  (0) 2019.09.18
query tweak join vs large table  (0) 2019.09.17
Posted by 구차니

자기 자신의 필드 두개의 값을 . 으로 서로 간에 이어주려고 하는데(예 a,b -> a.b)

어떻게 하나 고민을 하는데.. 어라? where 조건이 optional 이었네?

[ WITH [ RECURSIVE ] with_query [, ...] ]
UPDATE [ ONLY ] table [ * ] [ [ AS ] alias ]
    SET { column = { expression | DEFAULT } |
          ( column [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]
    [ FROM from_list ]
    [ WHERE condition | WHERE CURRENT OF cursor_name ]
    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]

[링크 : https://www.postgresql.org/docs/9.1/sql-update.html]

 

그래서~!

UPDATE table SET column = concat(a,'.',b) WHERE a is not null;

으로 하니 원하는 대로 값이 있는 녀석들에 대해서만 a.b 식으로 붙여서 새로운 컬럼에 넣어줄 수 있다.

[링크 : https://blog.naver.com/troopa102/120160231056]

 

생각해보니 게시판 등에서 WHERE를 많이 쓴 이유가

하나의 내용을 수정하기 위함이라 Primary Key를 이용해야 하니

WHERE pk = idx 식으로 고정을 했던거고

 

나의 경우에는 테이블 전체에 대해서 어떠한 조건에 의해 수정하는 것이기에

수정할 조건(나의 경우에는 not null)로 해주면 자기 자신의 값을 모두 업데이트 할 수 있네?

 

오.. SQL 신기하고 재미있네 +_+

병렬처리 하는 느낌 좋음 ㅋㅋ

 

 

+

2019.09.30

regexp_matches()는 여러줄을 뱉는 애라 update에서 못쓰니

subtring()을 써서 정규표현식으로 자르면 된다고 한다.

[링크 : https://stackoverflow.com/questions/936513/postgresql-query-to-update-fields-using-a-regular-expression]

Posted by 구차니

오류:  정수 자료형 대한 잘못된 입력 구문: "NULL"

 

\COPY FROM 명령을 통해서 csv import 하려는데 에러가 나서

이런저런 옵션을 조합해 보다내린 결론은.. CSV 파일을 잘못 만들었다!!! 으아아아아앙!!!

 

그래서.. "NULL" 으로 표기된 문자를 sed를 통해서 ,, 으로 빈값으로 변환시켜주면

psql 에서 정상적으로 NULL로 받아올 수 있다.

sed 's/\"NULL\"//g' inputfile > outputfile

'프로그램 사용 > postgreSQL' 카테고리의 다른 글

복수 컬럼에 대한 inner join  (0) 2019.09.18
postgresql update  (0) 2019.09.18
query tweak join vs large table  (0) 2019.09.17
postgresql csv import null as null  (0) 2019.09.11
cross join  (0) 2019.09.08
Posted by 구차니

join은 확실히 무거운 녀석이라. 큰 테이블과 큰 테이블을 join하면 메모리부터

어마어마하게 부하가 걸린다.

 

일단은.. large table이 유리한 것으로 보이는데

정규화로는 어떻게 할 수 있는 건 아닌것 같으니 이렇게 하는 걸지도?

 

[링크 : https://medium.com/.../blazingly-fast-querying-on-huge-tables-by-avoiding-joins-5be0fca2f523]

Posted by 구차니

null로 써있는 것을 DB에 끌어갈때는 NULL로 인식시킨다고 하는데 해보긴 해야겠네..

 

 copy r from '/home/y.csv' delimiter ',' csv NULL AS 'null';

[링크 : https://stackoverflow.com/questions/19034674/copy-null-values-present-in-csv-file-to-postgres]

Posted by 구차니

2.14.0 쓰고 있었는데

2.15.x 부터 3-way diff를 지원한다고 한다.

이제.. kdiff3 안써도 되겠다 +_+!

[링크 : https://winmerge.org/docs/releasenotes.php]

Posted by 구차니

내가 원하는건 아래의 예인데..

CROSS JOIN

 

I get: 
Col1 | Col2 | Col3 | Col4 | Col5  
--------------------------------- 
NULL | NULL | NULL |  2   |  0 
 7   |  3   |  4   | NULL | NULL 


I want to get 

Col1 | Col2 | Col3 | Col4 | Col5  
--------------------------------- 
  7  |  3   |   4  |  2   |  0

 

막상 쿼리를 보니 그냥 두개 합쳐서 골라서 빼내는 것 같네..

자동으로 null은 없애고 합치는건 없으려나?

SELECT B.Col1 
    ,B.col2 
    ,B.col3 
    ,A.col4 
    ,A.col5 
FROM ( 
    SELECT NULL AS Col1 
        ,NULL AS Col2 
        ,NULL AS Col3 
        ,2 AS Col4 
        ,0 AS Col5 
    ) A 
CROSS JOIN ( 
    SELECT 7 AS Col1 
        ,3 AS Col2 
        ,4 AS Col3 
        ,NULL AS Col4 
        ,NULL AS Col5 
    ) B

[링크 : https://stackoverflow.com/questions/36078353/sql-server-union-with-multiple-columns/36078940]

 

+

null을 없애고 합치는건 left join이 오히려 유용한건가?

[링크 : https://stackoverflow.com/questions/11461867/sql-cross-join-with-null-values]

'프로그램 사용 > postgreSQL' 카테고리의 다른 글

query tweak join vs large table  (0) 2019.09.17
postgresql csv import null as null  (0) 2019.09.11
sql 여러행을 하나로 합치기 concat  (0) 2019.09.08
값별 갯수 통계  (0) 2019.09.07
postgresql.conf 설정사항들  (0) 2019.09.06
Posted by 구차니