|
|
|
@ -2,34 +2,51 @@ |
|
|
|
|
-- RANDOM |
|
|
|
|
-- Test the random function |
|
|
|
|
-- |
|
|
|
|
-- count the number of tuples originally |
|
|
|
|
-- count the number of tuples originally, should be 1000 |
|
|
|
|
SELECT count(*) FROM onek; |
|
|
|
|
count |
|
|
|
|
------- |
|
|
|
|
1000 |
|
|
|
|
(1 row) |
|
|
|
|
|
|
|
|
|
-- select roughly 1/10 of the tuples |
|
|
|
|
-- Assume that the "onek" table has 1000 tuples |
|
|
|
|
-- and try to bracket the correct number so we |
|
|
|
|
-- have a regression test which can pass/fail |
|
|
|
|
-- - thomas 1998-08-17 |
|
|
|
|
-- pick three random rows, they shouldn't match |
|
|
|
|
(SELECT unique1 AS random |
|
|
|
|
FROM onek ORDER BY random() LIMIT 1) |
|
|
|
|
INTERSECT |
|
|
|
|
(SELECT unique1 AS random |
|
|
|
|
FROM onek ORDER BY random() LIMIT 1) |
|
|
|
|
INTERSECT |
|
|
|
|
(SELECT unique1 AS random |
|
|
|
|
FROM onek ORDER BY random() LIMIT 1); |
|
|
|
|
random |
|
|
|
|
-------- |
|
|
|
|
(0 rows) |
|
|
|
|
|
|
|
|
|
-- count roughly 1/10 of the tuples |
|
|
|
|
SELECT count(*) AS random INTO RANDOM_TBL |
|
|
|
|
FROM onek WHERE random() < 1.0/10; |
|
|
|
|
-- select again, the count should be different |
|
|
|
|
INSERT INTO RANDOM_TBL (random) |
|
|
|
|
SELECT count(*) |
|
|
|
|
FROM onek WHERE random() < 1.0/10; |
|
|
|
|
-- now test the results for randomness in the correct range |
|
|
|
|
-- select again, the count should be different |
|
|
|
|
INSERT INTO RANDOM_TBL (random) |
|
|
|
|
SELECT count(*) |
|
|
|
|
FROM onek WHERE random() < 1.0/10; |
|
|
|
|
-- select again, the count should be different |
|
|
|
|
INSERT INTO RANDOM_TBL (random) |
|
|
|
|
SELECT count(*) |
|
|
|
|
FROM onek WHERE random() < 1.0/10; |
|
|
|
|
-- now test that they are different counts |
|
|
|
|
SELECT random, count(random) FROM RANDOM_TBL |
|
|
|
|
GROUP BY random HAVING count(random) > 1; |
|
|
|
|
GROUP BY random HAVING count(random) > 3; |
|
|
|
|
random | count |
|
|
|
|
--------+------- |
|
|
|
|
(0 rows) |
|
|
|
|
|
|
|
|
|
SELECT random FROM RANDOM_TBL |
|
|
|
|
WHERE random NOT BETWEEN 80 AND 120; |
|
|
|
|
random |
|
|
|
|
-------- |
|
|
|
|
SELECT AVG(random) FROM RANDOM_TBL |
|
|
|
|
HAVING AVG(random) NOT BETWEEN 80 AND 120; |
|
|
|
|
avg |
|
|
|
|
----- |
|
|
|
|
(0 rows) |
|
|
|
|
|
|
|
|
|