안녕하세요. 이번 시간에는 postgresql에서 쓰는 string_agg 함수에 대해 간단하게 알아보겠습니다. 그리고 정렬하는 것과 중복 제거하는 것도 같이 알아볼게요. 먼저, string_agg는 컬럼의 값들을 하나의 string으로 합쳐주는 역할을 합니다. 입력으로 들어오는 row의 속성들을 하나의 string으로 합칠 때 쓰입니다. 이게 무슨 말인가? 예제를 하나 보겠습니다. temp_data를 with 절로 정의했어요. 속성 t의 값이 'a'인 것과, t의 값이 'b'인 것과, 'Z'인 것을 union한 결과를 temp_data로 정의했어요. 이제, temp_data에 있는 내용을 출력해 봅시다. 'c', 'b', 'Z', 'b'가 나옵니다. 이제 이것을 string_agg로 합쳐 보겠습니다. ..
코딩 검색 결과
postgresql에서 with 절은 임시 결과를 정의할 때 유용하였습니다. 이걸 여러 개를 쓸 수 있을까요? 2023년 6월 1일부터 오늘까지 통계치를 뽑고 싶을 때 유용하게 쓰일 법한 예제를 보면서 간단하게 알아보겠습니다. 테이블 d에는 id, s, created 필드가 있습니다. s와 created는 각각 내용과 생성된 날을 의미합니다. 어떤 레코드들이 있는지 보기 위해, select * from d; 를 입력해 보았습니다. 그랬더니 요래 나오는군요. created의 맨 마지막 부분에 +0900이 되어 있는 것으로 보아, 서울 시간으로 되어 있는 것이 분명하군요. 이제 저는 날짜별로 몇 개의 레코드가 생성되었는지 집계하고 싶습니다. 어떻게 하면 될까요? 날짜별로 집계 하려면 group by 날짜를 ..
파이썬에는 한 줄을 입력받기 위한 함수로 sys.stdin의 readline만 있는 것이 아닙니다. 기본적으로 input()이라는 built in 함수를 제공합니다. 저 함수가 무엇인지 간단하게 알아보겠습니다. 먼저 1.txt에는 위와 같은 내용이 있습니다. 1 abcde, 그리고 2. 이렇게 2개의 줄이 있습니다. input 함수를 읽어봅시다. standard input (stdin)으로부터 string을 읽는다고 되어 있습니다. 그리고 개행 문자는 strip 된다고 되어 있습니다. 예제를 하나 보겠습니다. for loop로 5번 루프를 돌립니다. 각 loop마다 input()을 호출하고, 받은 문자열을 출력합니다. 입력을 1.txt에서 받아보겠습니다. 윈도우 powershell에서는 아직 redire..
파이썬에는 문자열을 입력받는 방법이 몇 가지 있습니다. 백준에서는 sys.stdin에 있는 readline을 많이 쓰는데요. 간단하게 알아보도록 하겠습니다. 먼저 python의 sys.stdin에 있는 readline은 한 줄씩 입력을 받는데요. 아무 것도 없는 경우에 빈 배열을 돌려줍니다. 만약에 한 줄에 아무 것도 없고 개행만 있는 경우에는, 개행이 있기 때문에 이야기가 달라집니다. 예제를 보겠습니다. 우리는 빈 배열이 리턴되면, 루프에서 빠져나가야 한다는 것을 알고 있습니다. while True: 로 계속 입력을 받습니다. 그런데 if not s: 이면 break를 겁니다. 배열의 경우 빈 배열일 때 해당 조건이 참이 되므로, 이 프로그램은 맞게 실행되는 것처럼 보입니다. 대부분의 백준 문제의 경우..
postgresql에서 어제 날짜와 내일 날짜를 구하는 방법을 알아보겠습니다. 현재 시간을 구하는 함수는 now()입니다. 여기서 '1 days'::interval을 뺀 값을 yesterday로 명명하였습니다. 결과를 볼까요? 그랬더니, 2023년 5월 23일 22시 24분 16.752초 +0900이 나옵니다. now() 리턴값의 type을 pg_typeof라는 함수로 할 수 있습니다. timestamp with time zone이라고 되어 있습니다. 즉 timezone입니다. 이 문서에서 table 9.32는 Date와 Time을 연산할 때 어떤 결과가 나오지에 대해서 설명합니다. timestamp와 interval을 더하면 timestamp가 나오게 됩니다. now()에 '1 days'::interv..
최근댓글