Tôi đấu tranh để tìm câu trả lời trực tuyến và thấy phương pháp sau đây có hiệu quả đối với tôi, dựa trên một số thông tin ở trên nhưng với cách tiếp cận cập nhật khác. Đăng ở đây trong trường hợp nó cũng giúp người khác.
Lưu ý: đối với tập dữ liệu của tôi, xếp hạng là phép tính cố định một lần, nó sẽ không thay đổi. Tôi muốn thêm nó như là một cột để tiết kiệm chạy một tính toán mỗi khi tôi kéo dữ liệu từ MySQL vào Python.
Giải pháp tôi đã sử dụng:
- bộ cấp bậc 0 (như trên)
- tạo ra một bảng tạm thời chứa các truy vấn chọn để tính toán thứ hạng
- cập nhật bảng ban đầu với các cấp bậc tính.
tên mẫu sử dụng, rowid là định danh duy nhất cho mỗi hàng, giá trị là số liệu sẽ được sử dụng để xác định thứ hạng cho mỗi hàng
SET @rank=0;
CREATE TEMPORARY TABLE rank_temp
AS
(SELECT rowid, value, @rank:[email protected]+1 AS rank FROM source_table ORDER BY value ASC);
UPDATE sourcetable a, rank_temp b
SET a.rank = b.rank
WHERE a.rowid = b.rowid;
Đó là một phương pháp thô nhưng đã làm việc trên tôi tập dữ liệu.
Nguồn
2015-07-01 13:14:08
Thứ tự được cho là dựa trên điều gì? Theo thứ tự chữ cái? – JNK
Không quan trọng. Tôi cần phải có số tất cả các số từ 1-3 (1-size) – Dejell