Trong phân tích dữ liệu và thống kê, phân vị là một khái niệm quan trọng, giúp đánh giá vị trí của một giá trị trong một tập hợp dữ liệu. Trong MySQL, bạn có thể sử dụng hàm CUME_DIST()
để tính phân vị cho các giá trị trong bảng dữ liệu của mình một cách dễ dàng và hiệu quả.
CUME_DIST()
là một trong những hàm cửa sổ (window function) trong MySQL, giúp bạn tính toán tỉ lệ tích lũy của một giá trị cụ thể trong tập dữ liệu. Nói một cách đơn giản, nó cho phép bạn xác định phần trăm các giá trị có giá trị thấp hơn hoặc bằng giá trị đó trong một tập hợp dữ liệu.
Cú pháp của CUME_DIST()
Cú pháp của hàm CUME_DIST()
trong MySQL như sau:
CUME_DIST() OVER (
[PARTITION BY partition_definition]
ORDER BY order_definition
)
Trong đó:
PARTITION BY partition_definition
: Tùy chọn, định nghĩa phân vùng của dữ liệu. Nếu không chỉ định, toàn bộ dữ liệu sẽ được xem xét.ORDER BY order_definition
: Bắt buộc, xác định cách sắp xếp dữ liệu trước khi tính toán phân vị.
Ví dụ minh họa
Dưới đây là ví dụ cụ thể để giúp bạn hiểu rõ cách sử dụng CUME_DIST()
trong MySQL:
Giả sử bạn có một bảng tên là employees
với các cột id
, name
, và salary
. Mục đích của bạn là tính toán phân vị của mức lương của từng nhân viên trong công ty.
SELECT
id,
name,
salary,
CUME_DIST() OVER (ORDER BY salary) AS cum_dist
FROM
employees;
Kết quả trả về sẽ là:
id | name | salary | cum_dist |
---|---|---|---|
1 | Alice | 3000 | 0.2 |
2 | Bob | 4000 | 0.4 |
3 | Charlie | 5000 | 0.6 |
4 | David | 6000 | 0.8 |
5 | Eve | 7000 | 1.0 |
Trong kết quả trên, cột cum_dist
biểu thị phân vị của mức lương cho từng nhân viên:
- Alice có mức lương 3000, đứng ở vị trí phân vị 20% (hay 0.2), nghĩa là 20% nhân viên có mức lương thấp hơn hoặc bằng Alice.
- Tương tự, David với mức lương 6000 có phân vị 80% (hay 0.8), nghĩa là 80% nhân viên có mức lương thấp hơn hoặc bằng mức lương của David.
Sử dụng PARTITION BY
Nếu bạn muốn tính phân vị mức lương của nhân viên theo phòng ban, bạn có thể sử dụng PARTITION BY
như sau:
SELECT
department,
id,
name,
salary,
CUME_DIST() OVER (PARTITION BY department ORDER BY salary) AS cum_dist
FROM
employees;
Cú pháp trên sẽ chia nhân viên theo từng phòng ban và tính phân vị trong từng phân vùng đó.
Lưu ý
CUME_DIST()
luôn trả về giá trị từ 0.0 đến 1.0.- Kết quả của
CUME_DIST()
không bao giờ giảm, chỉ tăng hoặc giữ nguyên khi giá trị tiếp tục tăng.
Tóm lại, hàm CUME_DIST()
là một công cụ mạnh mẽ trong MySQL giúp bạn phân tích và khám phá dữ liệu theo ngữ cảnh phân vị, giúp tối ưu quá trình ra quyết định và phân tích chi tiết hơn.
Comments