Ce face CUME_DIST()
CUME_DIST() răspunde la întrebarea „ce procent din rânduri sunt mai mici sau egale cu acesta?”. Rezultatul este între 0 (exclusiv) și 1 (inclusiv).
Parametri
| Parametru | Descriere |
|---|---|
ORDER BY |
Criteriul de ordonare. |
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: Câte vânzări sunt cel mult egale cu fiecare valoare
SELECT suma,
ROUND(CUME_DIST() OVER (ORDER BY suma), 3) AS distributie,
ROUND(PERCENT_RANK() OVER (ORDER BY suma), 3) AS pozitie_relativa
FROM vanzari
ORDER BY suma, agent;
Rezultat
+------+-------------+------------------+
| suma | distributie | pozitie_relativa |
+------+-------------+------------------+
| 900 | 0.375 | 0 |
| 900 | 0.375 | 0 |
| 900 | 0.375 | 0 |
| 1100 | 0.5 | 0.429 |
| 1200 | 0.625 | 0.571 |
| 1500 | 0.75 | 0.714 |
| 1700 | 0.875 | 0.857 |
| 2000 | 1 | 1 |
+------+-------------+------------------+
Greșeli frecvente
- Uiți că valorile egale primesc același rezultat. Două sume de 900 au amândouă aceeași distribuție cumulativă.
Comenzi înrudite
PERCENT_RANK(): Poziția relativă a unui rând, între 0 și 1: (loc − 1) / (rânduri − 1).NTILE(): Împarte rândurile în N grupe cât mai egale și spune în care grupă este fiecare rând.