RANDOM 함수
RANDOM 함수는 0.0(포함)과 1.0(제외) 사이에서 무작위로 값을 생성합니다.
구문
RANDOM()
반환 타입
DOUBLE PRECISION
사용 노트
RANDOM이 예측 가능한 순서로 숫자를 생성할 수 있도록 SET 명령으로 시드 값을 설정한 후 RANDOM을 호출하십시오.
예
0에서 99 사이의 무작위 값을 계산하려면 다음 예제를 사용합니다. 무작위 숫자가 0에서 1이면 이 쿼리는 0에서 100 사이의 무작위 숫자를 생성합니다.
SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 59 | +------+
다음은 RANDOM이 예측 가능한 순서로 숫자를 생성할 수 있도록 SET 명령을 사용하여 SEED 값을 설정하는 예입니다.
SEED 값을 설정하지 않고 3개의 RANDOM 정수를 반환하려면 다음 예제를 사용합니다.
SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 6 | +------+
SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 68 | +------+
SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 56 | +------+
SEED 값을 .25
로 설정하고 RANDOM 숫자를 3개 더 반환하려면 다음 예제를 사용합니다.
SET SEED TO .25; SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 21 | +------+
SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 79 | +------+
SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 12 | +------+
SEED 값을 .25
로 재설정하고 RANDOM이 이전 세 번의 호출과 동일한 결과를 반환하는지 확인하려면 다음 예제를 사용합니다.
SET SEED TO .25; SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 21 | +------+
SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 79 | +------+
SELECT CAST(RANDOM() * 100 AS INT);
+------+ | int4 | +------+ | 12 | +------+
다음 예제에서는 TICKIT 샘플 데이터베이스를 사용합니다. 자세한 내용은 샘플 데이터베이스 단원을 참조하십시오.
SALES 테이블에서 10개 항목의 균일한 무작위 샘플을 검색하려면 다음 예제를 사용합니다.
SELECT * FROM sales ORDER BY RANDOM() LIMIT 10;
+---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | 45422 | 51114 | 5983 | 24482 | 4369 | 2118 | 1 | 195 | 29.25 | 2008-10-19 05:20:07 | | 42481 | 47638 | 4573 | 6198 | 6479 | 1987 | 4 | 1140 | 171 | 2008-06-10 09:39:19 | | 31494 | 34759 | 18895 | 4719 | 7753 | 2090 | 4 | 1024 | 153.6 | 2008-09-21 03:44:26 | | 119388 | 136685 | 21815 | 41905 | 2071 | 1884 | 1 | 359 | 53.85 | 2008-02-27 10:43:10 | | 166990 | 225037 | 18529 | 7628 | 746 | 2113 | 1 | 2009 | 301.35 | 2008-10-14 10:07:44 | | 11146 | 12096 | 42685 | 6619 | 1876 | 2123 | 1 | 29 | 4.35 | 2008-10-24 06:23:54 | | 148537 | 172056 | 15102 | 11787 | 6122 | 1923 | 2 | 480 | 72 | 2008-04-07 03:58:23 | | 68945 | 78387 | 7359 | 18323 | 6636 | 1910 | 1 | 457 | 68.55 | 2008-03-25 08:31:03 | | 52796 | 59576 | 9909 | 15102 | 7958 | 1951 | 1 | 479 | 71.85 | 2008-05-05 02:25:08 | | 90684 | 103522 | 38052 | 21549 | 7384 | 2117 | 1 | 313 | 46.95 | 2008-10-18 05:43:11 | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
10개 품목의 무작위 샘플을 검색하되 가격에 비례하여 품목을 선택하려면 다음 예제를 사용합니다. 예를 들어 다른 항목보다 가격이 두 배 높은 항목은 쿼리 결과에 나타날 가능성이 두 배 더 높습니다.
SELECT * FROM sales ORDER BY -LOG(RANDOM()) / pricepaid LIMIT 10;
+---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | 158340 | 208208 | 17082 | 42018 | 1211 | 2160 | 4 | 6852 | 1027.8 | 2008-11-30 12:21:43 | | 53250 | 60069 | 12644 | 7066 | 7942 | 1838 | 4 | 1528 | 229.2 | 2008-01-12 11:24:56 | | 22929 | 24938 | 47314 | 6503 | 179 | 2000 | 3 | 741 | 111.15 | 2008-06-23 08:04:50 | | 164980 | 221181 | 1949 | 19670 | 1471 | 1906 | 1 | 1330 | 199.5 | 2008-03-21 07:59:51 | | 159641 | 211179 | 44897 | 16652 | 7458 | 2128 | 1 | 1019 | 152.85 | 2008-10-29 02:02:15 | | 73143 | 83439 | 5716 | 5727 | 7314 | 1903 | 1 | 248 | 37.2 | 2008-03-18 11:07:42 | | 84778 | 96749 | 46608 | 32980 | 3883 | 1999 | 2 | 958 | 143.7 | 2008-06-22 12:13:31 | | 171096 | 232929 | 43683 | 8536 | 8353 | 1870 | 1 | 929 | 139.35 | 2008-02-13 01:36:36 | | 74212 | 84697 | 39809 | 15569 | 5525 | 2105 | 2 | 896 | 134.4 | 2008-10-06 11:47:50 | | 158011 | 207556 | 25399 | 16881 | 232 | 2088 | 2 | 2526 | 378.9 | 2008-09-19 06:00:26 | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+