Mogę sobie tylko wyobrazić, że robię to z dwoma zapytaniami do bazy danych. Pierwszy znajduje liczbę wierszy w bazie danych, a drugi wybiera z ORDER BY
kolumną, która mnie interesuje i LIMIT X, 1
gdzie X jest połową liczby wierszy.
Czy istnieje prosty sposób, aby to zrobić za pomocą tylko jednego zapytania?
W tej chwili używam średnich w moich obliczeniach, ale myślę, że średnia byłaby lepsza; wartości nie mają górnej granicy i są one ograniczone od dołu przez 0.
EDYCJA: tak, chciałem powiedzieć „mediana”, ale miałem jakiś błąd mózgu i szukałem „średniej”. Znalazłem teraz odpowiedź w stackoverflow
meta
wydaje się, że istnieje podział co do pogody, to pytanie powinno być tutaj lub w SO. Rozumiem, że to może nie być zapytanie na poziomie ninja , ale mnie zaskoczyło i w firmie, w której pracuję, nie ma DBA (łącznie 6 osób).Odpowiedzi:
Jest sporo dyskusji tutaj na obliczanie wartości mediany z tabeli MySQL. Wystarczy wyszukać na stronie „mediana”.
Nawiasem mówiąc, wydaje mi się, że nie mam wbudowanej funkcji, aby to zrobić. Mediana jest często bardziej opisowa niż tendencja centralna. Access / VBA ma ten sam otwór na liście funkcji.
źródło
Nigdzie nie widziałem rozwiązania, które zdołałoby uzyskać medianę w jednym zapytaniu. Nie przeszkadza mi tabele tymczasowe, ale jeśli nie są konieczne, świetnie! Oto, co wymyśliłem:
Przetestowałem to na parzysty zestaw i uzyskałem właściwą odpowiedź. brand_prof to tylko dwie kolumny: nazwa marki i zysk, wartość dziesiętna. Jeśli byłyby to liczby całkowite, być może trzeba rzucić „sufit ((CAST COUNT (*) AS DECIMAL) ...”) Więcej niż testowałem. Fajnym pomysłem na użycie produktu kartezjańskiego i powiązanie sumy znaków było nie moje. Niestety nie pamiętam autora.
źródło