SQL 문을 통해 이것저것 조인을 하다 보면

예상하지 못하게 이상하게 갯수가 많이 늘어가는 경우가 발생한다.

대개(?)는 1:1 조건인줄 알았던 테이블이 예상외로 1:N 조건이기 때문에 발생을 하는데

 

ROW_NUMBER() OVER(PARITION BY)를 이용하여 left join 결과를 정렬후

상위 쿼리에서(즉 LEFT_JOIN은 서버 쿼리에서 수행) ROW_NUMBER = 1인 조건으로 걸러내면 될 듯 하다.

 

일단 해보진 않았으니 패스~ 이론적으로만 알아둬야지.. 끄응

 

SELECT
    A.PersonName, A.Email
FROM
        (
        Select Person.PersonName, Email.Email
            ,ROW_NUMBER() OVER(PARTITION BY Person.ID ORDER BY Email.Email) AS RN
        From person 
        left join Email on Person.ID=Email.PersonId
        ) A
WHERE A.RN = 1

[링크 : https://dba.stackexchange.com/questions/103815...]

[링크 : https://stackoverflow.com/questions/3375436/how-do-i-limit-a-left-join-to-the-1st-result-in-sql-server]

 

+

UPDATE 쿼리에서 join을 통해 할 경우에도

아마도.. 물리적으로 배열된 컬럼중에 가장 위에것이 되지 않겠냐 라는 답변이 있는데

반대로 생각하면 할때 마다 다른 결과가 나올수도 있다.. 라는 의미가 된다.

[링크 : https://stackoverflow.com/questions/9502449/updating-and-join-on-multiple-rows-which-rows-value-is-used]

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

sql 표준함수 종류  (0) 2019.12.09
postgresql 시퀀스 값 초기화 하기  (0) 2019.11.29
array_agg 빈 배열을 누적할 수 없습니다.  (0) 2019.11.28
sql over() partition by  (0) 2019.11.28
pg_tables, pg_sequences  (0) 2019.11.28
Posted by 구차니

하나는 들어있고 다른 하나는 비어있는 걸 합치려고 하니 에러가 나서

찾아보니 그냥 함수를 만들어 버린듯 

CREATE AGGREGATE array_accum (anyarray)
(
    sfunc = array_cat,
    stype = anyarray,
    initcond = '{}'
);  


[링크 :
https://gist.github.com/ryandotsmith/4602274]]

[링크 : https://codeday.me/ko/qa/20190625/887424.html]

Posted by 구차니

분석함수를 나타내는거 over()

partition by는 계산 대상 그룹을 지정하고.. 라는데 무슨 말인지 이해가 안된다..

[링크 : http://www.gurubee.net/lecture/2671]

[링크 : https://syoons.tistory.com/8]

[링크 : https://brownbears.tistory.com/310]

 

곰곰히 생각해보니.. 여러개 쿼리로 일일이 조건을 줘서 통계를 내야 할 걸

한줄에 편리하게 하는 것일 뿐인가?

select *
from(
   select code, date, account, upd_date,

   max(upd_date) over (partition by code, date) as maxdate from hoge

) t1
where t1.upd_date = t1.maxdate;

[링크 : https://javafactory.tistory.com/1343]

 

+

편하게 쓰려고 만들었다 라는 말이 맞는게

group by는 전체 쿼리에 적용

partition by는 window function 으로 작동

[링크 : https://stackoverflow.com/questions/2404565/sql-server-difference-between-partition-by-and-group-by]

Posted by 구차니

좀 대량으로 지울일이 있어서 pgadmin으로 하려니 일일이 클릭해야 해서 대략 빡침 시전

그러다가 psql 가서 하려니..

크아아 public schema가 아니라 바로 안나오네?!?!

 

그래서 고민 때리다 검색해보니

[링크 : https://stackoverflow.com/questions/4202135/how-to-drop-multiple-tables-in-postgresql-using-a-wildcard]

 

pg_tables와 pg_sequences에서 테이블 명을 검색해서 뽑아낼수 있어

그걸 이용해서 drop table, drop sequence를 해버리니 편하네

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

array_agg 빈 배열을 누적할 수 없습니다.  (0) 2019.11.28
sql over() partition by  (0) 2019.11.28
pgcrypt encrypt() aes cbc ecb 그리고 padding  (0) 2019.11.25
sql TO_CHAR()  (0) 2019.11.23
sql where like %와 _  (0) 2019.11.22
Posted by 구차니

일단~은

AES/CBC/PKCS5PADDING이 기본이라고 보면 될 듯?

 

Encrypt/decrypt data using the cipher method specified by type. The syntax of the type string is:

where algorithm is one of:

  • bf — Blowfish

  • aes — AES (Rijndael-128, -192 or -256)

and mode is one of:

  • cbc — next block depends on previous (default)

  • ecb — each block is encrypted separately (for testing only)

and padding is one of:

  • pkcs — data may be any length (default)

  • none — data must be multiple of cipher block size

[링크 : https://www.postgresql.org/docs/9.6/pgcrypto.html]

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

sql over() partition by  (0) 2019.11.28
pg_tables, pg_sequences  (0) 2019.11.28
sql TO_CHAR()  (0) 2019.11.23
sql where like %와 _  (0) 2019.11.22
split_part() 에서 나눠지지 않을 경우 없는 막기  (0) 2019.11.15
Posted by 구차니

 

 

[링크 : https://it.toolbox.com/question/padding-zeros-for-a-sequence-080714]

[링크 : https://stackoverflow.com/questions/6862766/how-to-create-postgresql-leading-zero-sequence-zerofill]

[링크 : https://w3resource.com/PostgreSQL/lpad-function.php]

[링크 : https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_db&wr_id=131902]

 

+

mysql zerofill 이라는 옵션제공(table 생성시)

[링크 : https://m.blog.naver.com/luvtoma/221179414916]

 

단, 표시가 다르게 될 뿐이지, 실제 저장되는 데이터 사이즈가 달라지는건 아니라는 이야기

[링크 : https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_db&wr_id=169515&page=638]

 

oracle에서는 LPAD나 RPAD혹은 TO_CHAR로 하라는거 봐서는

mysql에서만 제공하는 특수한 기능으로 보인다.

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

mariadb c# connector  (0) 2021.10.22
HeidiSQL  (2) 2021.08.18
mysql-dump compatible 함정 -_-  (0) 2019.09.04
mysql / unix-socket  (0) 2019.09.04
mysql exists  (0) 2019.07.05
Posted by 구차니

어떻게 보면.. sprintf 역활을 하는 함수라고 하면 되려나?

특정 자릿수로 제한하거나 공백에 0을 채우거나 할때

 

SELECT TO_CHAR(value, '00000')

이렇게 하면 value가 5자리를 넘지 않을 경우

00001~99999 까지 자릿수 유지하면서 출력한다.

[링크 : https://www.postgresql.org/docs/9.3/functions-formatting.html]

Posted by 구차니

솔찍히 다시 원점으로 돌아가서

처음부터 봐야 할 느낌.. branch 오가거나 특정 revision 가거나 하는거

막 혼동이 온다...

 

[링크 : https://blog.outsider.ne.kr/820]

Posted by 구차니

%는 * 의미

_는 ? 의미 로 사용이 가능하다.

[링크 : https://www.w3schools.com/sql/sql_wildcards.asp]

Posted by 구차니

git은 여전히 어렵다... ㅠㅠ

git의 HEAD에서 몇번째 전으로 돌아가서 그걸 다시 올리거나

[링크 : https://mytory.net/archives/10078]

 

그게 아니라면 특정 버전까지를 전부 지우는 것도 가능 한듯?

[링크 :https://medium.com/nonamedeveloper/초보용-git-되돌리기-reset-revert-d572b4cb0bd5]

 

 

+

stash 영역이란걸 알아두면 편할 듯?

리비전 오갈때 잠시 저장해 둘 수 있는 곳

[링크 : https://medium.com/@pks2974/자주-사용하는-기초-git-명령어-정리하기-533b3689db81]

Posted by 구차니