Tôi đang cố đặt một bảng theo hai cột, mỗi cột có trọng số khác nhau. Đầu tiên là uptime
, giá trị nằm trong khoảng từ 0 đến 1 và có trọng số là 0,3. Thứ hai là votes
, là số nguyên không âm và có trọng số là 0,7.Sử dụng giá trị cột tối đa theo thứ tự
Trọng số cần được nhân với giá trị từ 0-1, vì vậy tôi sẽ nhận được số phiếu này bằng cách chia số phiếu cho mỗi hàng theo số phiếu bầu tối đa được giữ bởi bất kỳ hàng nào.
Đây là câu hỏi của tôi cho đến nay, và nó hầu như hoạt động:
SELECT addr
FROM servers
ORDER BY (0.3 * uptime) +
(0.7 * (votes/100)) DESC
100 được mã hóa cứng và nên được giá trị tối đa votes
. Sử dụng MAX(votes)
làm cho truy vấn chỉ trả về bản ghi có số phiếu bầu cao nhất. Điều này có thể được thực hiện trong một truy vấn không?
Tôi nghĩ rằng anh ấy muốn thay thế '100' bởi 'cái MAX (phiếu)', và không phải 'phiếu bầu' cho 'MAX (phiếu bầu)'. –
@aF. Cảm ơn - đã sửa lỗi đó. – Sirko
Tôi không hiểu tại sao, nhưng trên db của tôi, điều này chỉ trả lại hàng duy nhất có nhiều phiếu nhất. Tôi thậm chí đã thử nó từ phpmyadmin. Collation có quan trọng không? – Matt