TylkoPolak
27.12.2009, 18:23:53
Witam wszystkich.
Męczę się długo z powyższym zagadnieniem.
Zapytanie zwracające średnią pięciu ostatnio wpisanych liczb(rekordów).
Próbowałem
SELECT AVG(liczba) AS liczba1 FROM liczby GROUP BY liczby DESC LIMIT 5;
Powyższe zapytanie tworzy jednak średnią wszystkich pól z tabeli, a ja potzrebuję 5 ostatnio dodanych. LIMIT widocznie w tej sytuacji nie ma prawa głosu.
Dziękuję z góry za pomoc
darko
27.12.2009, 18:29:15
a nie ORDER BY liczby DESC LIMIT 5 ?
TylkoPolak
27.12.2009, 18:37:50
dokładnie ORDER BY, wpisałem złą zkładnię...
pytanie z order właśnie nie zwraca poprawnego wyniku, tylko średnią wszystkich elementów
ktoś może zna alternatywne podejście do tej sprawy
darko
27.12.2009, 18:45:43
SELECT AVG(liczba) FROM liczby ORDER BY liczba DESC LIMIT 5;
? A masz w tabeli kolumnę np. data_dodania typu np. datetime ?
TylkoPolak
27.12.2009, 18:54:03
To zapytanie zwraca średnią wszystkich elementów,
mam taką tabelę, próbowałem coś pod tym kontem ale nie wiem jak
darko
27.12.2009, 18:58:12
możesz dodać jedną kolumnę data_dodania typu datetime, jak robisz insert to jako wartość wstawiasz do tego pola NOW(), następnie zapytanie będzie wyglądało tak:
SELECT AVG(liczba) FROM liczby ORDER BY data_dodania DESC LIMIT 5;
korro
27.12.2009, 19:11:27
Może coś takiego:
SELECT avg(a.liczba) FROM (
SELECT liczba FROM liczby ORDER BY liczba DESC LIMIT 5) a;
TylkoPolak
27.12.2009, 19:51:44
Dokładnie to jest dobra wersja. Co prawda kilkadziesiąt minut wcześniej kolega podyktował i ją przez tel ale koledze "korro" i tak należą się punkty za pomoc. Tak to jest ja nie można nic zdziałać to nie można, a czasem dobre podpowiedzi idą parami:) Dzięki również dla "darko".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.