Lists: | pgsql-general |
---|
From: | Ovid <curtis_ovid_poe(at)yahoo(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Fw: Clipping values |
Date: | 2010-03-24 16:30:56 |
Message-ID: | 859249.9789.qm@web65711.mail.ac4.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
In response to a private email from someone else on this list, I thought I should send the following clarification.
I have a table with four values which are constantly lowered by user action. These four values must rise over time, in five minute intervals. The core of the function, in pseudo-code, would look something like this:
FOREACH row IN SELECT * FROM some_table WHERE some_percentages are less than 1
LOOP
new_percentage = num_intervals * .1 > 1
? 1
: num_intervals * .1;
UPDATE some_table SET some_percentages = new_percentage WHERE id = row.id
END LOOP
But, of course, doing that for four percentages (with at least one having a different increment value than .1)
Cheers,
Ovid
From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Ovid <curtis_ovid_poe(at)yahoo(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Fw: Clipping values |
Date: | 2010-03-24 16:40:28 |
Message-ID: | 23671.1269448828@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
Ovid <curtis_ovid_poe(at)yahoo(dot)com> writes:
> I have a table with four values which are constantly lowered by user action. These four values must rise over time, in five minute intervals. The core of the function, in pseudo-code, would look something like this:
> FOREACH row IN SELECT * FROM some_table WHERE some_percentages are less than 1
> LOOP
> new_percentage = num_intervals * .1 > 1
> ? 1
> : num_intervals * .1;
> UPDATE some_table SET some_percentages = new_percentage WHERE id = row.id
> END LOOP
> But, of course, doing that for four percentages (with at least one having a different increment value than .1)
You could code that directly with CASE operations, but it would probably
be easier to use GREATEST/LEAST, along the lines of
new_percentage = LEAST(num_intervals * .1, 1);
regards, tom lane
From: | Ovid <curtis_ovid_poe(at)yahoo(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Fw: Clipping values |
Date: | 2010-03-24 18:54:39 |
Message-ID: | 972778.56617.qm@web65702.mail.ac4.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-general |
----- Original Message ----
> From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
> You could code that directly with CASE
> operations, but it would probably
> be easier to use GREATEST/LEAST, along the
> lines of
> new_percentage = LEAST(num_intervals * .1,
> 1);
Ah, I didn't know about the LEAST function! I love you (platonically, of course. My fiancée might have issues otherwise).
Cheers,
Ovid
--
Buy the book - http://www.oreilly.com/catalog/perlhks/
Tech blog - http://blogs.perl.org/users/ovid/
Twitter - http://twitter.com/OvidPerl
Official Perl 6 Wiki - http://www.perlfoundation.org/perl6