我想寫一個函數來計算MySQL中的簡單修剪平均值計算。該函數將(顯然)是一個聚合函數。我是新手,在MySQL中編寫函數等,所以可以做一些幫助。MySQL中的修剪平均值計算
微調平均值的算法如下(僞代碼):
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
任何人都可以用如何正確以上的寫入功能,與MySQL的使用幫助?
是否有具體的原因,你想做這個功能,而不是作爲一個查詢?此外,由於您使用標準SQL,因此您首選回答上一個問題,您是否需要能夠跨越多個不同的RDBMS(即,不僅僅是MySQL)使用它? – 2012-01-18 10:34:45
@MarkBannister我打算使用PG(我最喜歡的數據庫!),但是我不得不跳過太多的環節讓PG使用PHP(重新編譯PHP [或類似的瘋狂請求]等),所以我選擇了mySQL我已經在使用PHP。我想將它作爲函數的原因是我想在查詢中返回一個修剪的平均值作爲列。我想(如果我有一個SQL解決方案),我可以將一些SQL拼湊在一起,將修剪後的平均值作爲列「粘貼」到返回的數據集中。 – 2012-01-18 11:17:00
@MarkBannister:簡短的回答你的問題。 ANSI SQL版本將是理想的。但是由於我恰好在使用mySQL,因此如果我__擁有以db爲中心的特性,那麼MySQL風格的SQL將優先。 – 2012-01-18 11:24:18