From: Tarlika Elisabeth Schmitz <postgresql6@numerixtechnology.de>
To: pgsql-sql@postgresql.org
Subject: GROUP and ORDER BY
Date: Mon, 7 Nov 2011 21:20:31 +0000
Message-ID: <20111107212031.4d6310aa@dick.coachhouse> (raw)
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: postgresql6@numerixtechnology.de
Subject: Re: GROUP and ORDER BY
In-Reply-To: <20111107212031.4d6310aa@dick.coachhouse>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox