Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi RANDOM menghasilkan nilai acak antara 0,0 (inklusif) dan 1,0 (eksklusif).
Sintaksis
RANDOM()
Jenis pengembalian
DOUBLE PRECISION
Catatan penggunaan
Panggil RANDOM setelah menetapkan nilai seed dengan SET perintah untuk menyebabkan RANDOM menghasilkan angka dalam urutan yang dapat diprediksi.
Contoh
Untuk menghitung nilai acak antara 0 dan 99, gunakan contoh berikut. Jika angka acak adalah 0 hingga 1, kueri ini menghasilkan angka acak dari 0 hingga 100.
SELECT CAST(RANDOM() * 100 AS INT);
+------+
| int4 |
+------+
| 59 |
+------+
Contoh ini menggunakan SET perintah untuk menetapkan nilai SEED sehingga RANDOM menghasilkan urutan angka yang dapat diprediksi.
Untuk mengembalikan tiga bilangan bulat RANDOM tanpa menetapkan nilai SEED, gunakan contoh berikut.
SELECT CAST(RANDOM() * 100 AS INT);
+------+
| int4 |
+------+
| 6 |
+------+
SELECT CAST(RANDOM() * 100 AS INT);
+------+
| int4 |
+------+
| 68 |
+------+
SELECT CAST(RANDOM() * 100 AS INT);
+------+
| int4 |
+------+
| 56 |
+------+
Untuk mengatur nilai SEED ke.25
, dan mengembalikan tiga nomor RANDOM lagi, gunakan contoh berikut.
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 |
+------+
Untuk mengatur ulang nilai SEED ke.25
, dan memverifikasi bahwa RANDOM mengembalikan hasil yang sama dengan tiga panggilan sebelumnya, gunakan contoh berikut.
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 |
+------+
Contoh berikut menggunakan database sampel TICKIT. Untuk informasi selengkapnya, lihat Database sampel.
Untuk mengambil sampel acak seragam 10 item dari tabel PENJUALAN, gunakan contoh berikut.
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 |
+---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
Untuk mengambil sampel acak 10 item, tetapi pilih item secara proporsional dengan harganya, gunakan contoh berikut. Misalnya, item yang dua kali harga yang lain akan dua kali lebih mungkin muncul dalam hasil kueri.
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 |
+---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+