如何在混合数据中从MySQL中提取中值?

时间:2011-10-22 23:36:03

标签: mysql sql

我试图从一张桌子中计算出各种类型数据混合在一起的中位数(我无法修改表格)。第3行和第6行是混合的数据的示例,行1,2,4和5是我合法需要数据的行的示例(WHERE form_id = 1 AND field_id = 1):

id    form_id    field_id    value
1     1          1           200
2     1          1           290
3     1          2           'Delicious Bacon'
4     1          1           320
5     1          1           120
6     2          3           9000000

据我所知,我可以使用以下内容从表中导出中位数:

SELECT x.value from form_data x, form_data y
GROUP BY x.value
HAVING SUM(SIGN(1-SIGN(y.value-x.value))) = (COUNT(*)+1)/2;

然而,混合的数据挑战了我的SQL能力。如何找到此数据的中位数,仅在form_id = 1和field_id = 1?

的位置

1 个答案:

答案 0 :(得分:1)

试试这个

SELECT x.value from form_data x, form_data y
WHERE x.form_id=1 and x.field_id=1 and y.form_id=and y.field_id=1
GROUP BY x.value
HAVING SUM(SIGN(1-SIGN(y.value-x.value))) = (COUNT(*)+1)/2;