Amazon Redshift는 2025년 11월 1일부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. Python UDF를 사용하려면 이 날짜 이전에 UDF를 생성하세요. 기존 Python UDF는 정상적으로 계속 작동합니다. 자세한 내용은 블로그 게시물
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 | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+