Как рассчитать медиану в MySQL, используя случай, когда

0

У меня есть таблица с именем station имеющей столбец LAT_N. Я пытаюсь получить медиану LAT_N.

Итак, вот мой запрос:

select 
case when count(Lat_N)%2=0 then (select (Lat_N from station limit (1,ceil(count(Lat_N)/2))+ select (Lat_N from station limit (1,floor(count(Lat_N)/2)))))
else (Select Lat_N from station limit(1,floor(count(Lat_N)/2)+1))
end
from station;
  • 2
    обновите свой вопрос, добавьте правильную выборку данных и ожидаемый результат.
  • 0
    Какую версию ты используешь?
Теги:
median
case-when

1 ответ

0

Попробуйте выполнить следующий запрос:

SELECT avg(tmp1.LAT_N) as median_LAT FROM (
SELECT @rownum:=@rownum+1 as row_number, s.val
  FROM station s,  (SELECT @rownum:=0) r
  ORDER BY s.LAT_N
) as tmp1, 
(
  SELECT count(*) as total_rows
  FROM station s
) as tmp2
AND tmp1.row_number in ( floor((total_rows+1)/2), floor((total_rows+2)/2) );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню