Чтобы получить значение Медиана из длительность , "last_ts - first_ts", для таблицы User_sessions (id, first_ts, last_ts):
Select MAX(totalSessions.duration) AS median
from
(
SELECT User_sessions.last_ts - User_sessions.first_ts AS duration, @counter := @counter +1 AS counter
FROM (select @counter:=0) initvar, User_sessions
ORDER BY duration ASC
) totalSessions
where (50/100 * @counter) > counter
This работает:
1) Внутренний выбор: назначение счетчика приращений для каждой строки User_sessions, упорядоченной по длительности,
lowest duration counter=1
2nd lowest counter=2
3rd lowest counter=3
2) В конце @counter = общее количество строк User_sessions.
3) Внешний выбор, фильтры в строках с counter <@ counter. </p>
Ссылки