Skip to content

Instantly share code, notes, and snippets.

@nakagami
Last active September 17, 2018 07:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save nakagami/b2888278a3dd2e3c84d9 to your computer and use it in GitHub Desktop.
Save nakagami/b2888278a3dd2e3c84d9 to your computer and use it in GitHub Desktop.
SQL functions RANK(), PERCENT_RANK(), CUME_DIST() and NTILE()
CREATE TABLE test_rank (
i integer,
s varchar(1)
);
INSERT INTO test_rank (i, s) VALUES (1, 'A');
INSERT INTO test_rank (i, s) VALUES (2, 'B');
INSERT INTO test_rank (i, s) VALUES (2, 'b');
INSERT INTO test_rank (i, s) VALUES (3, 'D');
INSERT INTO test_rank (i, s) VALUES (4, 'E');
SELECT
ROW_NUMBER() OVER (ORDER BY i),
RANK() OVER (ORDER BY i),
DENSE_RANK() OVER (ORDER BY i),
PERCENT_RANK() OVER (ORDER BY i),
CUME_DIST() OVER (ORDER BY i),
NTILE(4) OVER (ORDER BY i),
s
FROM test_rank ORDER BY i, s;
row_number | rank | dense_rank | percent_rank | cume_dist | ntile | s
------------+------+------------+--------------+-----------+-------+---
1 | 1 | 1 | 0 | 0.2 | 1 | A
2 | 2 | 2 | 0.25 | 0.6 | 1 | B
3 | 2 | 2 | 0.25 | 0.6 | 2 | b
4 | 4 | 3 | 0.75 | 0.8 | 3 | D
5 | 5 | 4 | 1 | 1 | 4 | E
(5 rows)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment