I'm looking for something similar this in SQL Server:
SELECT TOP n WITH TIES FROM tablename
I know about LIMIT
in PostgreSQL, but does the equivalent of the above exist? I'm just curious as it would save an extra query each time for me.
If I have a table Numbers
with attribute nums
: {10, 9, 8, 8, 2}
. I want to do something like:
SELECT nums FROM Numbers ORDER BY nums DESC LIMIT *with ties* 3
It should return {10, 9, 8, 8}
because it takes the top 3 plus the extra 8
since it ties the other one.
Try this:
Output: 10, 9, 8, 8
Output: 10,10,9,8,8
There is no
WITH TIES
clause in PostgreSQL like there is in SQL Server.In PostgreSQL I would substitute this for
TOP n WITH TIES .. ORDER BY <something>
:To be clear,
rank()
is right,dense_rank()
would be wrong (return too many rows).Consider this quote from the SQL Server docs (from the link above):
The job of
WITH TIES
is to include all peers of the last row in the top n as defined by theORDER BY
clause.rank()
gives the exact same result.To make sure, I tested with SQL server, here is a live demo.
And here is a more convenient SQLfiddle.