Search Postgresql Archives

Re: count (DISTINCT field) OVER ()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tarlika Elisabeth Schmitz, 10.11.2011 11:24:
SELECT id,
        name,
        delta,
        sum(case when rn = 1 then rn else null end)  over() as
distinct_id_count
FROM (
     SELECT
       id, name, similarity(name, 'Tooneyvara') as delta,
       row_number() OVER(partition by id) AS rn
       FROM vtown
       WHERE
           similarity(name, 'Tooneyvara')>  0.1
) t
ORDER BY delta DESC



I like you suggestion, Thomas. It is not that dissimilar from but
cleaner than my original SELECT ... FROM (SELECT DISTINCT ON(id)
attempt.
It's also very slightly faster.

Here's another, slightly shorter, variation of your suggestion:

SELECT id, name, delta,
        max(rank)  OVER() as cnt
FROM (
      SELECT
        id, name, similarity(name, 'Tooneyvara') as delta,
        dense_rank() OVER(ORDER BY id) AS rank
        FROM vtown
        WHERE
            similarity(name, 'Tooneyvara')>  0.1
) t
ORDER BY delta DESC

Nice trick with the dense_rank(), never thought of that.

Regards
Thomas



--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux