From: | David Johnston <polobo(at)yahoo(dot)com> |
---|---|
To: | Tarlika Elisabeth Schmitz <postgresql6(at)numerixtechnology(dot)de> |
Cc: | "pgsql-general(at)postgresql(dot)org>" <pgsql-general(at)postgresql(dot)org>> |
Subject: | Re: count (DISTINCT field) OVER () |
Date: | 2011-11-10 00:40:49 |
Message-ID: | 6D6ED5C4-9475-4D22-B69A-29284E739295@yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Nov 9, 2011, at 18:52, Tarlika Elisabeth Schmitz <postgresql6(at)numerixtechnology(dot)de> wrote:
> I would like to implement the equivalent of "count (DISTINCT field) OVER
> ()":
>
>
> SELECT
> id, name, similarity(name, 'Tooneyvara') as delta,
> count (id) OVER() AS cnt
> FROM vtown
> WHERE
> similarity(name, 'Tooneyvara') > 0.1
> ORDER BY delta DESC
>
> produces result:
> 1787 Toomyvara 0.5 4
> 1787 Toomevara 0.4 4
> 1700 Ardcroney 0.105 4
> 1788 Townsfield 0.1 4
>
> What I would like is a "3" in the cnt column (ignoring id duplicates).
>
>
> How can I achieve this?
>
>
> The best I can come up with is:
>
> SELECT id, name,delta, count (*) OVER()
> FROM (
> SELECT DISTINCT ON (id)
> id, name, similarity(name, 'Tooneyvara') as delta
> FROM vtown
> WHERE
> similarity(name, 'Tooneyvara') > 0.1
> ORDER BY id, delta DESC
> ) AS x
> ORDER by delta DESC
>
> --
>
> Best Regards,
> Tarlika Elisabeth Schmitz
>
> --
> Sent via pgsql-general mailing list (pgsql-general(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
1. Write your main query in a WITH (CTE)
2. Query #1 with appropriate GROUP BY clause (CTE)
3. In the main statement JOIN 1 and 2
David J.
From | Date | Subject | |
---|---|---|---|
Next Message | David Johnston | 2011-11-10 00:42:53 | Re: PostgreSQL 9.0.5 concat Issue |
Previous Message | Tarlika Elisabeth Schmitz | 2011-11-09 23:52:35 | count (DISTINCT field) OVER () |