I\'m looking for something similar this in SQL Server:
SELECT TOP n WITH TIES FROM tablename
I know about LIMIT in PostgreSQL,
Postgres 13 finally adds WITH TIES . See:
There is no WITH TIES clause up to PostgreSQL 12, like there is in SQL Server.
In PostgreSQL I would substitute this for TOP n WITH TIES .. ORDER BY :
WITH cte AS (
SELECT *, rank() OVER (ORDER BY ) AS rnk
FROM tbl
)
SELECT *
FROM cte
WHERE rnk <= n;
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):
For example, if expression is set to 5 but 2 additional rows match the values of the ORDER BY columns in row 5, the result set will contain 7 rows.
The job of WITH TIES is to include all peers of the last row in the top n as defined by the ORDER 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.