我有一个包含3列的表:list_num,sales_price和days_on_market
我想运行一个查询,为列的平均值输出一个数字' 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子句中的count函数周围得到了语法错误,但是我想把它放在这里以显示我的思考过程。有什么想法吗?
答案 0 :(得分: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