Я далеко от своей лиги здесь ...
У меня есть таблица сопоставления (table1) для назначения определенных значений (value) целому числу (map_nu). Моя вторая таблица (table2) - это набор средних значений (avg) для каждого пользователя (user_id).
( Я не мог понять, как правильно составить таблицу уценок, пожалуйста, не стесняйтесь редактировать! )
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 - это специальный номер, который каждому пользователю присваивается в соответствии с его средним значением. Мне нужно найти способ сопоставить средние значения из таблицы2 с ближайшим значением в таблице1. Мне нужно сопоставить только две цифры после десятичной дроби, поэтому я добавил усеченную функцию
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
Спасибо!