【发布时间】:2010-04-15 23:22:32
【问题描述】:
我在这里已经超出了我的水平......
我有一个映射表 (table1),用于将特定值 (value) 分配给整数 (map_nu)。我的第二个表 (table2) 是每个用户 (user_id) 的平均值 (avg) 的集合。
(我不知道如何正确制作降价表,请随时编辑!)
table1: table2:
(value)(Map_nu) (user_id)(avg)
---- -----
1 1 1 1.111
1.045 2 2 1.2
1.09 3 3 1.33333
1.135 4 4 1
1.18 5 5 1.389
1.225 6 6 1.42
1.27 7 7 1.07
1.315 8
1.36 9
1.405 10
值 Map_nu 是每个用户根据平均分配的特殊数字。我需要找到一种方法将 table2 中的平均值与 table1 中最接近的值相匹配。我只需要匹配到小数点后2位,所以我添加了截断函数
SELECT table2.user_id, map_nu
FROM `table1`
JOIN table2 ON TRUNCATE(table1.value,2)=TRUNCATE(table2.avg,2)
我仍然错过了与平均值不完全匹配的值。有没有办法选择最接近的截断值,甚至四舍五入到小数点后第二位?向上/向下舍入无关紧要,只要它应用于相同的所有值。
我试图得到以下结果(如果向上取整):
(user_id)(Map_nu)
----
1 4
2 6
3 6
4 1
5 10
6 11
7 3
谢谢!
【问题讨论】: