Re: Advanced Query

From: Michael Fuhr <mike(at)fuhr(dot)org>
To: operationsengineer1(at)yahoo(dot)com
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Advanced Query
Date: 2006-06-02 00:00:52
Message-ID: 20060602000051.GA12215@winnie.fuhr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

On Thu, Jun 01, 2006 at 04:09:21PM -0700, operationsengineer1(at)yahoo(dot)com wrote:
> what i can't seem to do is to get both - a count of
> the total number of t_inspect_result.inspect_pass
> where the value is true and a total count, by unique
> t_inspect.id.

Are you looking for something like this?

SELECT 1.0 * sum(CASE WHEN inspect_pass THEN 1 ELSE 0 END) / count(*)
FROM (
SELECT DISTINCT ON (inspect_id) inspect_id, inspect_pass
FROM t_inspect_result
ORDER BY inspect_id, id
) AS s;

Multiply by 100.0 instead of 1.0 if you want percent.

If you have a cast from boolean to integer (built-in in 8.1, easily
created in earlier versions) then you could replace the CASE
expression with a cast (inspect_pass::integer). Whether to use the
more explicit CASE or the more concise cast is a matter of style.

--
Michael Fuhr

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message operationsengineer1 2006-06-02 00:30:25 Re: Advanced Query
Previous Message postgres 2006-06-01 23:44:24 Re: Table design question