Chcę napisać funkcję, która oblicza proste obcinane średnie obliczenia w MySQL. Funkcja (oczywiście) będzie funkcją agregującą. Jestem nowy w pisaniu funkcji itp. W MySQL, więc mógłbym zrobić trochę pomocy.Przycięte średnie obliczenie w MySQL
Algorytm średnia obcięta będzie wyglądał następująco (Pseudokod):
CREATE AGGREGATE FUNCTION trimmed_mean(elements DOUBLE[], trim_size INTEGER)
RETURNS DOUBLE
BEGIN
-- determine number of elements
-- ensure that number of elements is greater than 2 * trim_size else return error
-- order elements in ASC order
-- chop off smallest trim_size elements and largest trim_size elements
-- calculate arithmetic average of the remaining elements
-- return arithmetic average
END
może ktoś pomóc z tym, jak napisać funkcję powyżej poprawnie, do użytku z MySQL?
Czy istnieje konkretny powód, dla którego chcesz to zrobić jako funkcję, a nie jako zapytanie? Ponadto, biorąc pod uwagę, że wolisz odpowiedź na poprzednie pytanie, ponieważ korzystał on ze standardowego kodu SQL, czy będziesz w stanie używać go w wielu różnych RDBMS (tj. Nie tylko w MySQL)? –
@MarkBannister Miałem zamiar pracować z PG (mój ulubiony db!), Ale musiałem przeskoczyć przez zbyt wiele kółek, aby PG mógł pracować z PHP (ponowna kompilacja PHP [lub podobnym zwariowanym pytaniem] itd.), Więc wybrałem mySQL, który Mam już pracę z PHP. Powodem, dla którego chciałem to jako funkcja, jest to, że chcę zwrócić średnią obciętą jako kolumnę w zapytaniu. Przypuszczam (gdybym miał rozwiązanie SQL), mógłbym zhakować razem jakiś SQL, by "wkleić" skrócone wartości średnie jako kolumnę do mojego zwróconego zestawu danych. –
@MarkBannister: krótka odpowiedź na twoje pytanie. Wersja ANSI SQL byłaby idealna. Ponieważ jednak pracuję z mySQL, to jeśli mam __have__ na db-centric, pierwszeństwo ma SQL z MySQL. –