postgresql에서 trunc 함수는 무엇일까요? 0 이상의 double형에서는 소수점을 버리기 위해, 미만인 경우 올림 처리를 하기 위해 쓰게 됩니다. 수학적으로 즉 0 이상에서는 floor와, 미만에서는 ceil과 동일하다고 할 수 있어요. trunc(-1.23, 1)을 보겠습니다. 소수점 1째 자리까지 나타냅니다. trunc한 결과를요. -1.23은 0보다는 작으므로 ceil을 하게 됩니다. -1.3은 -1.23보다는 작고, -1.2는 -1.23보다는 크거나 같습니다. 따라서, -1.2가 출력됩니다. 실행 결과는 위와 같습니다. trunc의 2번째 인자에 아무것도 주지 않으면 0보다 크거나 같은 경우 floor를, 작은 경우 ceiling을 하게 되는데요. 아래 예제를 보겠습니다. select ..
sql 검색 결과
간혹 가다가, postgresql에서 sql file에 있는 명령들을 실행시켜야 할 때가 있습니다. 예를 들어, custom 함수를 정의할 때라던지, 데이터들을 모두 import 할 때 등이 이에 해당되겠네요. 어떻게 하는지 알아보겠습니다. 먼저, app3 데이터베이스에 있는 테이블은 reply와 user입니다. user는 id가 4인 유저만 존재합니다. reply를 모두 얻어보겠습니다. 아무것도 없습니다. reply.sql은 Users의 chokw 밑에 있습니다. 이 문장은 그냥 reply 테이블에 id가 4인 유저가 "cd"라는 내용의 포스트와, 'ef"라는 포스트를 썼다는 정보를 추가합니다. psql 명령어는, -d 옵션을 주면 데이터베이스에 바로 접근이 가능합니다. 저는 postgres라는 유저로..
특정 조건을 만족하는 레코드에 대해서 집계되게 하게 하는 것은 어렵지 않습니다. 그런데, 이런 경우가 있을 수 있습니다. 1월에 카데고리별로 몇 개나 쓰여졌고, 2월에는 몇 개나 쓰여졌고, 이러한 것들을 집계해야 할 경우가 있을 텐데요. 사실 case when 등으로 처리를 할 수 있겠습니다만 postgres에서는.. aggregate filter를 처음 알게 되어서 여기에 쓰고자 합니다. 먼저, 포스트의 데이터들입니다. 포스트에는 점수와 post 내용, id와 category가 있습니다. 이들 중 post에 bye가 포함되는 것들을 모두 얻어와 봅시다. 1번 카데고리에 1개, 3번 카데고리에 2개가 있습니다. 그리고 1번 카데고리의 총 점수는 18점, 3번 카데고리는 87점입니다. 다음에 gahui가 ..
postgresql에서 random 함수를 쓰면서 generate_series 함수를 썼습니다. 오늘 이 함수에 대해서 조금 더 자세히 알아보도록 하겠습니다. 먼저, 숫자형에 대해서는, 이렇게 2가지 인자를 줄 수 있습니다. 이 때에는 step이 1입니다. 1씩 증가한다는 의미입니다. start가 1이고, end가 10인데요. 1부터 10까지 순서대로 결과에 나타납니다. 1부터 10까지 출력됨을 볼 수 있어요. 그런데 4씩 증가하게 할 수 없을까요? 3번째 인자로 4를 주면 됩니다. start가 1이고, end가 10, step이 4이므로, 1, 5, 9만 출력됩니다. 9 다음에 13인데요. 13은 10보다 크기 때문에, 출력되지 않습니다. 결과를 보면 1, 5, 9만 나왔음을 알 수 있습니다. 반대로,..
제 토이 프로젝트는 postgresql 12.9를 사용하고 있어요. 특정 api를 호출했을 때 쿼리가 실행이 될 텐데요. 쿼리가 실행될 때 어떤 lock이 걸리는지 간단하게 보기로 하였습니다. 데드락이 생길 수 있을까? 라는 의문이 들었기 때문입니다. 만약에 생긴다면 적당한 방법으로 회피를 해야 하기도 하고요. 그러면 어떤 식으로 lock이 걸리는 지 알아야 할 겁니다. 데이터가 그리 크지 않아서, 쿼리 수행이 매우 순식간에 끝나게 됩니다. 그래서, 쿼리가 실행되는 도중에 잠깐 sleep을 시켜야 됩니다. 이를 위해서 pg_sleep 함수를 이용하였습니다. 사용법은 간단합니다. 안에 몇 초 동안 sleep를 시킬 건지 넣기만 하면 됩니다. 1 row(s) fetched가 있는데요. 옆에 5.89초가 있습..
최근댓글