Я относительно новичок в MySQL, и я пытаюсь написать функцию, чтобы найти медиану списка широт.В Интернете я нашел несколько разных решений этой проблемы, но я не мог понять, что они делают.Я решил сделать что-то более легким для чтения и интуитивно понятным, но я, похоже, сталкиваюсь с некоторыми ошибками.По сути, метод находит минимум самой большой половины чисел и максимум нижней половины и усредняет их.Это должно охватывать как случаи четной, так и нечетной длины.
Я пытался протестировать каждый фрагмент кода и по какой-то причине я думаю, что все мои ошибки происходят из 6-й строки кода, где я пытаюсь найти среднее значение.Мой случай должен охватывать как четную, так и нечетную длину списков, поэтому у меня есть и med1
, и med2
.
Вот мой текущий код:
SET @med1 = (SELECT min(lat_n)
FROM station
WHERE lat_n >= (SELECT lat_n
FROM station
ORDER BY lat_n ASC
LIMIT FLOOR((SELECT COUNT(*)/2 FROM station)), 1
)
);
SET @med2 = (SELECT max(lat_n)
FROM station
WHERE lat_n <= (SELECT lat_n
FROM station
ORDER BY lat_n DESC
LIMIT FLOOR((SELECT COUNT(*)/2 FROM station)), 1
)
);
select round((@med1 + @med2)/2,4)
и сообщение об ошибке:
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '((SELECT COUNT(*)/2 FROM station)), 1
Я проверил каждый маленький «бит» кода (счетчик выбора (*), пол, предел) сам по себе, но по какой-то причине он не работает, когда все вместе.Вывод должен быть медианой столбца lat_n в табличной станции, но вместо этого я получаю эту ошибку.Заранее большое спасибо.