#mysql #median
#mysql #медиана
Вопрос:
Вот мой пример таблицы под названием t
, версия Mysql 5.7:
---- ------
| id | num |
---- ------
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
---- ------
И теперь я обнаружил, что медиана равна 5, используйте этот sql :
SELECT
AVG( tmp.num ) AS median_val
FROM
(
SELECT
num,
@rownum := @rownum 1 AS `row_number`,
@total_rows := @rownum
FROM
t,
( SELECT @rownum := 0 ) r
WHERE
num IS NOT NULL
ORDER BY
num
) AS tmp
WHERE
tmp.row_number IN ( FLOOR( ( @total_rows 1 ) / 2 ), FLOOR( ( @total_rows 2 ) / 2 ) );
Но я хочу разделить столбец num на 2 сегмента на основе медианы.
первый сегмент равен: 1,2,3,4,5; медиана равна: 3
второй сегмент равен: 5,6,7,8,9; медиана равна: 7
Я надеюсь, что выходной результат: 3,5,7
И вот онлайн-таблица t
Моя идея состоит в том, чтобы преобразовать приведенный выше результат sql в @variable, а затем вынести суждение о среднем условии подзапроса, но я думаю, что это не очень умно. Спасибо