| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| # Use generate_series |
| SELECT * FROM generate_series(1, 10); |
| -- |
| +---------------+ |
| |generate_series| |
| +---------------+ |
| | 1| |
| | 2| |
| | 3| |
| | 4| |
| | 5| |
| | 6| |
| | 7| |
| | 8| |
| | 9| |
| | 10| |
| +---------------+ |
| == |
| |
| # Use generate_series: non-default step width |
| SELECT * FROM generate_series(1, 10, 2); |
| -- |
| +---------------+ |
| |generate_series| |
| +---------------+ |
| | 1| |
| | 3| |
| | 5| |
| | 7| |
| | 9| |
| +---------------+ |
| == |
| |
| # Use generate_series: negative step width |
| SELECT * FROM generate_series(10, 1, -2); |
| -- |
| +---------------+ |
| |generate_series| |
| +---------------+ |
| | 10| |
| | 8| |
| | 6| |
| | 4| |
| | 2| |
| +---------------+ |
| == |
| |
| # Use generate_series: float number |
| SELECT * FROM generate_series(1.5, 5.5); |
| -- |
| +------------------------+ |
| |generate_series | |
| +------------------------+ |
| | 1.5| |
| | 2.5| |
| | 3.5| |
| | 4.5| |
| | 5.5| |
| +------------------------+ |
| == |
| |
| # Use generate_series: float number step width |
| SELECT * FROM generate_series(1, 3, 0.5); |
| -- |
| +------------------------+ |
| |generate_series | |
| +------------------------+ |
| | 1| |
| | 1.5| |
| | 2| |
| | 2.5| |
| | 3| |
| +------------------------+ |
| == |
| |
| # Use generate_series: extra columns |
| SELECT i, i+1, i*2 FROM generate_series(1, 3, 0.5) AS gs(i); |
| -- |
| +------------------------+------------------------+------------------------+ |
| |i |(i+1) |(i*2) | |
| +------------------------+------------------------+------------------------+ |
| | 1| 2| 2| |
| | 1.5| 2.5| 3| |
| | 2| 3| 4| |
| | 2.5| 3.5| 5| |
| | 3| 4| 6| |
| +------------------------+------------------------+------------------------+ |
| == |
| |
| |
| # Use generate_series: cross product |
| SELECT i, j, i+j FROM generate_series(1, 5) AS gs1(i), generate_series(0, 1, 0.5) AS gs2(j); |
| -- |
| +-----------+------------------------+------------------------+ |
| |i |j |(i+j) | |
| +-----------+------------------------+------------------------+ |
| | 1| 0| 1| |
| | 1| 0.5| 1.5| |
| | 1| 1| 2| |
| | 2| 0| 2| |
| | 2| 0.5| 2.5| |
| | 2| 1| 3| |
| | 3| 0| 3| |
| | 3| 0.5| 3.5| |
| | 3| 1| 4| |
| | 4| 0| 4| |
| | 4| 0.5| 4.5| |
| | 4| 1| 5| |
| | 5| 0| 5| |
| | 5| 0.5| 5.5| |
| | 5| 1| 6| |
| +-----------+------------------------+------------------------+ |
| == |
| |
| # Use generate_series: join alias |
| SELECT * |
| FROM (SELECT i FROM generate_series(1, 10) as GS(i)) AS R(r1), |
| (SELECT i FROM generate_series(1, 10) as GS(i)) AS S(s1) |
| WHERE R.r1 = S.s1; |
| -- |
| +-----------+-----------+ |
| |r1 |s1 | |
| +-----------+-----------+ |
| | 1| 1| |
| | 2| 2| |
| | 3| 3| |
| | 4| 4| |
| | 5| 5| |
| | 6| 6| |
| | 7| 7| |
| | 8| 8| |
| | 9| 9| |
| | 10| 10| |
| +-----------+-----------+ |
| == |
| |
| # Use generate_series: filter |
| SELECT i, j, k |
| FROM generate_series(1, 9) AS gs1(i), |
| generate_series(1, 9) AS gs2(j), |
| generate_series(1, 81) AS gs3(k) |
| WHERE i <= j AND i * j = k; |
| -- |
| +-----------+-----------+-----------+ |
| |i |j |k | |
| +-----------+-----------+-----------+ |
| | 1| 1| 1| |
| | 1| 2| 2| |
| | 1| 3| 3| |
| | 1| 4| 4| |
| | 1| 5| 5| |
| | 1| 6| 6| |
| | 1| 7| 7| |
| | 1| 8| 8| |
| | 1| 9| 9| |
| | 2| 2| 4| |
| | 2| 3| 6| |
| | 2| 4| 8| |
| | 2| 5| 10| |
| | 2| 6| 12| |
| | 2| 7| 14| |
| | 2| 8| 16| |
| | 2| 9| 18| |
| | 3| 3| 9| |
| | 3| 4| 12| |
| | 3| 5| 15| |
| | 3| 6| 18| |
| | 3| 7| 21| |
| | 3| 8| 24| |
| | 3| 9| 27| |
| | 4| 4| 16| |
| | 4| 5| 20| |
| | 4| 6| 24| |
| | 4| 7| 28| |
| | 4| 8| 32| |
| | 4| 9| 36| |
| | 5| 5| 25| |
| | 5| 6| 30| |
| | 5| 7| 35| |
| | 5| 8| 40| |
| | 5| 9| 45| |
| | 6| 6| 36| |
| | 6| 7| 42| |
| | 6| 8| 48| |
| | 6| 9| 54| |
| | 7| 7| 49| |
| | 7| 8| 56| |
| | 7| 9| 63| |
| | 8| 8| 64| |
| | 8| 9| 72| |
| | 9| 9| 81| |
| +-----------+-----------+-----------+ |
| == |
| |
| # Use generate_series: aggregation |
| SELECT count(*) FROM generate_series(1, 1000); |
| -- |
| +--------------------+ |
| |count(*) | |
| +--------------------+ |
| | 1000| |
| +--------------------+ |
| == |
| |
| SELECT sum(i) FROM generate_series(1, 1000) AS gs(i); |
| -- |
| +--------------------+ |
| |sum(i) | |
| +--------------------+ |
| | 500500| |
| +--------------------+ |
| == |
| |
| SELECT avg(i) FROM generate_series(1, 1000) AS gs(i); |
| -- |
| +------------------------+ |
| |avg(i) | |
| +------------------------+ |
| | 500.5| |
| +------------------------+ |
| == |
| |
| # Use generate_series: error messages |
| SELECT * FROM generate_series(); |
| -- |
| ERROR: Invalid number of arguments (1 : 15) |
| SELECT * FROM generate_series(); |
| ^ |
| == |
| |
| SELECT * FROM generate_series('a', 3); |
| -- |
| ERROR: Invalid argument types (1 : 15) |
| SELECT * FROM generate_series('a', 3); |
| ^ |
| == |
| |
| SELECT * FROM generate_series(1, 5, -1); |
| -- |
| ERROR: Invalid step width (1 : 15) |
| SELECT * FROM generate_series(1, 5, -1); |
| ^ |
| == |
| |