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만 나왔음을 알 수 있습니다.
반대로, 감소하는 순으로 찍을 수는 없을까요? step에 음수값을 주면 됩니다. start가 5이고, end가 2, step 값이 -2이므로, 5, 3, 1, ... 순으로 출력이 될 텐데요. 이 때, 1은 2보다 작으므로, 1부터는 출력되지 않습니다.
결과는 위와 같습니다. start, stop, step 이렇게 3개만 알아도 쓰는 데 큰 문제가 없습니다.
그런데, timestamp 값에 대해서도 generate_series 함수를 쓸 수 있습니다. 한 번 써 보겠습니다. 2022-01-01부터, 2022-07-23까지 7일 간격으로 출력을 해 봅시다.
어떻게 하면 될까요? start 값을 2022-01-01로 주고, end 값을 2022-07-23으로 주면 됩니다. 다음에, step을 7 days로 주면 됩니다.
그러면 7월 23일까지 잘 출력되었음을 볼 수 있습니다. 그런데, YYYY-MM-DD 꼴로 출력하고 싶습니다.
그럴려면 date 함수를 써 주시면 됩니다.
깔끔하게 YYYY-MM-DD 꼴로 출력됩니다. generate_series 함수는 이 정도만 아셔도 그리 큰 문제는 없을 듯 합니다.
'코딩 > Sql' 카테고리의 다른 글
dbeaver db 백업하고 복구하는 방법을 알아봅시다. (0) | 2022.08.25 |
---|---|
postgresql partial index 에 대해 간단하게 알아봅시다. (0) | 2022.08.01 |
postgresql random 함수를 알아봅시다. (0) | 2022.07.22 |
django mptt와 업뎃이 별로 없는 계층형 구조에 대해 알아봅시다. (0) | 2022.06.23 |
다대다 관계에서 많이 쓰는 mapping table을 간단하게 알아봅시다. (0) | 2022.06.18 |
최근댓글