Tôi muốn viết một hàm tính toán phép tính trung bình được cắt đơn giản trong MySQL. Hàm sẽ (rõ ràng) là hàm tổng hợp. Tôi mới để viết chức năng vv trong MySQL để có thể làm với một số trợ giúp.Tính toán trung bình được rút gọn trong MySQL
Thuật toán của giá trị trung bình tỉa sẽ như sau (giả):
CREATE AGGREGATE FUNCTION trimmed_mean(elements DOUBLE[], trim_size INTEGER)
RETURNS DOUBLE
BEGIN
-- determine number of elements
-- ensure that number of elements is greater than 2 * trim_size else return error
-- order elements in ASC order
-- chop off smallest trim_size elements and largest trim_size elements
-- calculate arithmetic average of the remaining elements
-- return arithmetic average
END
bất cứ ai có thể giúp với làm thế nào để viết các chức năng trên một cách chính xác, để sử dụng với MySQL?
Có lý do cụ thể mà bạn muốn làm điều này như là một chức năng, chứ không phải là một truy vấn? Ngoài ra, nếu bạn thích câu trả lời cho câu hỏi trước bởi vì nó đã sử dụng SQL chuẩn, bạn sẽ cần phải có khả năng sử dụng nó trên nhiều RDBMS khác nhau (tức là không chỉ MySQL)? –
@MarkBannister Tôi dự định làm việc với PG (db yêu thích của tôi!), Nhưng tôi phải nhảy qua quá nhiều vòng để có PG để làm việc với PHP (biên dịch lại PHP [hoặc yêu cầu tương tự điên rồ] vv), vì vậy tôi đã chọn mySQL Tôi đã làm việc với PHP. Lý do tôi muốn nó như là một chức năng là tôi muốn trả lại một trung bình cắt như một cột trong một truy vấn. Tôi giả sử (nếu tôi có một giải pháp SQL), tôi có thể hack cùng một số SQL để 'dán' các giá trị trung bình đã cắt thành cột vào tập dữ liệu trả về của tôi. –
@MarkBannister: câu trả lời ngắn cho câu hỏi của bạn. Một phiên bản ANSI SQL sẽ là lý tưởng. Nhưng kể từ khi tôi tình cờ làm việc với mySQL, sau đó nếu tôi __have__ là db-centric, một SQL có hương vị MySQL sẽ được ưu tiên. –