PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgresql CHỌN ngẫu nhiên với giá trị duy nhất

Câu hỏi của bạn có thể được diễn đạt lại thành:

"Đối với mỗi trong số mười nhà cung cấp được chọn ngẫu nhiên, hãy tìm một giao dịch được chọn ngẫu nhiên do nhà cung cấp đó cung cấp"?

Nếu vậy, điều đó cho bạn biết phải làm gì. Bạn cần hai lớp, một thẻ để chọn ngẫu nhiên mười nhà cung cấp, sau đó một thẻ để chọn một giao dịch ngẫu nhiên cho mỗi nhà cung cấp.

Đã cung cấp dữ liệu giả:

create table spam ( deal text, provider text );

insert into spam(deal,provider) 
SELECT prov_id||n::text, prov_id FROM (
    SELECT chr(x) AS prov_id from  generate_series(97, 92+26) x) y 
CROSS JOIN generate_series(1,10) n;

select provider FROM spam GROUP BY provider ORDER BY random() LIMIT 10;

Đây là một trong những hoạt động:

SELECT
 (SELECT deal FROM spam WHERE spam.provider = sel_prov.provider ORDER BY random() LIMIT 1),
 sel_prov.provider
FROM (select provider FROM spam GROUP BY provider ORDER BY random() LIMIT 10) sel_prov;

... khá nhiều chỉ bằng cách triển khai cụm từ ở trên dưới dạng SQL. Không biết có nhanh không; bạn có ý tưởng.

Nếu cách diễn đạt lại ở trên không chính xác, vui lòng làm rõ câu hỏi của bạn bằng dữ liệu mẫu và ví dụ hoặc một số chi tiết khác trong mô tả của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có nên ngắt kết nối () nếu tôi đang sử dụng Connect_cached () của Apache ::DBI?

  2. Làm thế nào để chọn bên trong Vòng lặp FOR để tính toán thêm?

  3. Cách sao lưu tất cả db bằng pg_dump trong tệp hàng loạt - Postgres

  4. PostgreSQL:NGOẠI KHÓA / ON XÓA CASCADE

  5. Làm cách nào để trả về mảng jsonb và mảng đối tượng từ dữ liệu của tôi?