blob: 961ebd7d456ec49b039bb3642764aeffaaed2c9e [file] [log] [blame]
# 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);
^
==