Mam następującą kwerendę MySQL, które działa perfekcyjnie:Korzystanie mediana wzdłuż bocznych funkcji MAX, MIN i AVG w MySQL
select
count(*) as `# of Data points`,
name,
max((QNTY_Sell/QNTYDelivered)*1000) as `MAX Thousand Price`,
min((QNTY_Sell/QNTYDelivered)*1000) as `MIN Thousand Price`,
avg((QNTY_Sell/QNTYDelivered)*1000) as `MEAN Thousand Price`
from
table_name
where
year(date) >= 2012 and
name like "%the_name%" and
QNTYDelivered > 0 and
QNTY_Sell > 0
group by name
order by name;
Teraz Pragnę również dodać kolumnę wynik, który daje mi mediana dane dla każdej linii. Pod SELECT
miałoby to wyglądać w idealnym świecie:
median((QNTY_Sell/QNTYDelivered)*1000) as `MEDIAN Thousand Price`
wyszukiwania Google dla MySQL medianą funkcji przyniósł mi do tej odpowiedzi, co wydaje się ok, jeśli jesteś zainteresowany mediany zestawu danych dla całej tabeli : Simple way to calculate median with MySQL
Różnica polega na tym, że grupuję dane w mojej tabeli przez kolumnę name
i chcę uzyskać medianę dla każdej linii danych pogrupowanych według tej kolumny.
Czy ktoś zna fajną sztuczkę, która pozwoli mi to zrobić?
Dzięki!
nie ma funkcji mediany w mysql –
Czy musi być w tym samym zapytaniu? Jeśli możesz uruchomić drugie zapytanie, możesz obliczyć punkt środkowy zestawu, gdy znasz już liczbę punktów danych. Środek jest jednym lub dwoma rzędami. Przeprowadź to samo zapytanie, ale dodaj LIMIT [środek], [środek punktu 2] i zwróć średnią. –
Będziesz musiał zmienić kolejność, wykonując powyższe czynności - zakładam, że chcesz uzyskać medianę QNTY_Sell/QNTYDelivered, więc musisz zamówić to, aby znaleźć punkt środkowy. – nickL