2017-06-02 35 views
3

我有3列的表格:list_num,sales_price和days_on_marketMySQL的:刪除數據的頂部和底部的第n%後,發現平均

我想運行一個查詢,將輸出的單數的平均值列'days_on_market',當按'sales_price'排序時,頂部5%和底部5%的行被刪除。

我找到了一個我認爲會在這裏幫助的例子,但答案太複雜了,我不明白(我剛剛開始學習上週的mySQL)。看到這個例子here

這裏是我的代碼:

SELECT round(avg(days_on_market),0) as "90% Sell In" 
FROM sold_q3_2016 
WHERE list_num NOT IN (
    SELECT list_num FROM sold_q3_2016 ORDER BY sales_price LIMIT (count(list_num)*0.05) 
    ) OR list_num NOT IN (
    SELECT list_num FROM sold_q3_2016 ORDER BY sales_price desc LIMIT (count(list_num)*0.05) 
    ) 
; 

現在,我甚至無法運行此我得到周圍數函數的語法錯誤LIMIT子句裏面,但我想離開這裏,以顯示我的想法處理。有任何想法嗎?

回答

3

有這樣的嘗試:在

SELECT AVG(days_on_market) 
FROM (
    SELECT 
    l.* 
    , @rownumber := @rownumber + 1 AS rownumber 
    FROM list_num l 
    , (SELECT @rownumber := 0) var_init_subquery 
    ORDER BY sales_price DESC 
) subquery_alias 
WHERE rownumber >= @rownumber * 0.05 
AND rownumber <= @rownumber * 0.95 
+0

不錯,我是在一個不同的方法使用工作'LIMIT'但似乎不接受使用變量......這意味着轉換爲準備好的語句(由於明顯的錯誤請參閱https://stackoverflow.com/questions/245180/variable-limit-clause-in-mysql)。 –