Ce face PERCENT_RANK()
PERCENT_RANK() transformă clasamentul în procent. Primul rând are 0, ultimul are 1. Formula este (RANK() − 1) / (numărul de rânduri − 1).
Parametri
| Parametru | Descriere |
|---|---|
ORDER BY |
Criteriul clasamentului. |
Ce returnează
Un număr real între 0 și 1.
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE vanzari (
agent VARCHAR(20),
oras VARCHAR(20),
luna INT,
suma INT
);
INSERT INTO vanzari VALUES
('Ana', 'Iași', 1, 1200), ('Ana', 'Iași', 2, 1500), ('Ana', 'Iași', 3, 900),
('Dan', 'Cluj', 1, 900), ('Dan', 'Cluj', 2, 900), ('Dan', 'Cluj', 3, 1700),
('Ioana', 'Iași', 1, 2000), ('Ioana', 'Iași', 2, 1100);
Exemplul 1: Poziția procentuală a fiecărei vânzări
SELECT agent, luna, suma,
ROUND(PERCENT_RANK() OVER (ORDER BY suma) * 100) AS procent
FROM vanzari
ORDER BY suma, agent, luna;
Rezultat
+-------+------+------+---------+
| agent | luna | suma | procent |
+-------+------+------+---------+
| Ana | 3 | 900 | 0 |
| Dan | 1 | 900 | 0 |
| Dan | 2 | 900 | 0 |
| Ioana | 2 | 1100 | 43 |
| Ana | 1 | 1200 | 57 |
| Ana | 2 | 1500 | 71 |
| Dan | 3 | 1700 | 86 |
| Ioana | 1 | 2000 | 100 |
+-------+------+------+---------+
Greșeli frecvente
- Confunzi
PERCENT_RANK()cuCUME_DIST(). Primul pornește de la 0, al doilea nu ajunge niciodată la 0.
Comenzi înrudite
CUME_DIST(): Distribuția cumulativă: ce parte din rânduri are o valoare mai mică sau egală.RANK(): Clasament cu locuri egale la valori egale și „găuri” după ele (1, 2, 2, 4).NTILE(): Împarte rândurile în N grupe cât mai egale și spune în care grupă este fiecare rând.