Re: random rows - Mailing list pgsql-sql

From Josh Berkus
Subject Re: random rows
Date
Msg-id 3AE87847.F943E9E6@agliodbs.com
Whole thread Raw
In response to random rows  (Jie Liang <jliang@ipinc.com>)
List pgsql-sql
Jie,

> How I can return random N rows from my select stmt?
> like:
> e.g. what my selectee is a set of 1000 rows, I want randomly
> pickup 100 of 1000.

You'd have to do it inside a function or external program, and copy the
rows to a temporary table (which is what you'd return to the user).  
Thus, language-agnostic rules:

CREATE FUNCTION return_random(X)

LOOP X Times

totalrecs = COUNT(*) FROM maintable WHERE NOT EXISTS temptable

offset_count = RANDOM*totalrecs

INSERT INTO temptable ( a, b, c, d )
SELECT a, b, c, d FROM maintable
LIMIT 1 OFFSET offset_count;

END LOOP

END;

than:

SELECT temptable

-Josh

-- 
______AGLIO DATABASE SOLUTIONS___________________________                                       Josh Berkus  Complete
informationtechnology      josh@agliodbs.com   and data management solutions       (415) 565-7293  for law firms, small
businesses      fax  621-2533   and non-profit organizations.       San Francisco
 


pgsql-sql by date:

Previous
From: "Joao Pedro M. F. Monoo"
Date:
Subject: Re: random rows
Next
From: Joel Burton
Date:
Subject: Re: random rows