2012-06-25 36 views
7

Được rồi, vì vậy tôi có bảng người dùng và muốn nhận giá trị tối đa cho người dùng có số điểm cao nhất chia cho một điểm. Dưới đây là một ý tưởng thô những gì tôi đang tìm kiếm:Cách tính tổng và chia trong MySql

SELECT MAX(SUM(points)/SUM(score)) FROM users 

Tôi không quan tâm đến việc bổ sung lên cả cột và phân chia, chứ không phải tôi quan tâm đến việc chia điểm và điểm số cho mỗi người dùng và lấy giá trị cao nhất ra khỏi lô.

+4

CHỌN MAX (điểm/điểm) TỪ người dùng không hoạt động? – thesunneversets

Trả lời

3

Có lẽ bạn có thể làm điều này với một subquery: Mô tả

Select max(points_over_Score) 
from 
    (Select points/score AS points_over_score 
    from users); 

Và như thesunneversets đề cập trong một chú thích, mà có lẽ có thể được rút ngắn xuống còn

SELECT MAX(points/score) FROM users; 

Bạn đang viết về những gì bạn' tái cố gắng để làm không làm cho nó rõ ràng lý do tại sao ví dụ của bạn có SUM trong nó, vì vậy tôi đã không sử dụng nó.

Ngoài ra, các câu hỏi mã như thế này phù hợp hơn cho stackoverflow.com. Bạn có thể gắn cờ câu hỏi của riêng mình để yêu cầu người kiểm duyệt di chuyển nó.

+0

Thực ra, nó hoạt động hoàn hảo. Tôi nghĩ rằng nó sẽ thêm cả điểm và điểm số (như trong TẤT CẢ điểm và điểm số) và sau đó đi từ đó, nhưng nó dường như làm điều đó như tôi muốn. Một câu hỏi cuối cùng: làm thế nào tôi có thể nhận được giá trị ở dạng thập phân (nếu số đi ra một số thập phân?) –

+0

@Nick: Điều gì làm việc hoàn hảo? – FrustratedWithFormsDesigner

+0

Truy vấn bạn đã đăng hoạt động chính xác như tôi muốn. Tôi đã nói rằng tôi nghĩ rằng một truy vấn như thế sẽ dẫn đến cả hai cột được thêm vào và trả về kết quả của các điểm được chia cho điểm số, thay vì trả lại điểm/điểm cao nhất. Bây giờ tôi chỉ cần có nó vì vậy nếu kết quả là một số thập phân, nó sẽ trở lại dưới dạng thập phân thay vì được làm tròn. –

0

Thất vọngWithFormsCâu trả lời của nhà thiết kế sẽ không hoạt động nếu bạn cần tổng hợp tất cả các điểm, sau đó là tất cả điểm số và sau đó chia cả hai. Câu trả lời đó phân chia từng điểm theo điểm số, sau đó trả về câu trả lời cao nhất.

này nên làm việc:

SELECT MAX(sum_points/sum_score) from 
(SELECT SUM(points) as sum_points, SUM(score) as sum_score FROM users) 

BTW, đây trả về một "bất thường" tỷ lệ phần trăm. Bạn có thể muốn chia điểm theo điểm. Ví dụ, nếu bạn nhận được 70 trong số 100, đó là 70%, hoặc điểm số (70)/điểm (100).

Các vấn đề liên quan