GROUP and ORDER BY

From: Tarlika Elisabeth Schmitz <postgresql6(at)numerixtechnology(dot)de>
To: pgsql-sql(at)postgresql(dot)org
Subject: GROUP and ORDER BY
Date: 2011-11-07 21:20:31
Message-ID: 20111107212031.4d6310aa@dick.coachhouse
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hello,

I would like to GROUP the result by one column and ORDER it by another:

SELECT
no, name, similarity(name, 'Tooneyvara') AS s
FROM vtown
WHERE similarity(name, 'Tooneyvara') > 0.4
ORDER BY s DESC

Result:

1787 "Toomyvara" 0.5
1787 "Toomevara" 0.4
1188 "Toonybara" 0.4

Desired result:

1787 "Toomyvara" 0.5
1188 "Toonybara" 0.4

Gets rid of the duplicate "no" keeping the spelling with the greater
similarity and presents the remaining result ordered by similarity.

My solution:

SELECT * FROM
(
SELECT DISTINCT ON (no)
no, name,
similarity(name, 'Tooneyvara') AS sim
FROM vtown
WHERE similarity(name, 'Tooneyvara') > 0.4
ORDER BY no, sim DESC
) AS x
ORDER BY sim

Is that the best way to achieve this result?
--

Best Regards,
Tarlika Elisabeth Schmitz

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Robins Tharakan 2011-11-08 04:27:08 Re: GROUP and ORDER BY
Previous Message Little, Douglas 2011-11-07 20:03:54 Re: How to implement Aggregate Awareness?