Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wyciągnąć średnią z podziałem na miesiące
Forum PHP.pl > Forum > Bazy danych > MySQL
Kinool
Tabela składa się z pól user, ocena, data

W każdym miesiącu użytkownik może dostać kilka ocen chciałbym wyciągnąć średnią z podziałem na miesiące.

W chili obecnej robię to "ręcznie" czyli np w pętli:
  1. SELECT `data`, AVG(ocena) AS `srednia` FROM `tabela` WHERE `user`=X AND `data`>='2011-04' AND `data`< '2011-05'


Zastanawia mnie czy jest jakieś eleganckie rozwiązanie tego zapytania żeby dostać wyniki w stylu:

Kod
+----------+-------+
|   Data   |Srednia|
+----------+-------+
| 2011-03  |  17.7 |
+----------+-------+
| 2011-04  |  12.5 |
+----------+-------+
| 2011-05  |  14.1 |
+----------+-------+
nospor
GROUP BY
I grupuj po miesiącach
Kinool
niestety nie bardzo (już próbowałem ale z GROUP BY data) dostaję średnią z pierwszego miesiąca jaki jest w tabeli

nawet jak zakombinuję coś w stylu
  1. SELECT DATE_FORMAT(DATA, '%Y-%m') AS DATA, AVG( ooz ) AS srednia
  2. FROM `tabela`
  3. WHERE `user`=9
  4. ORDER BY DATE_FORMAT(DATA, '%Y-%m')


to też to niewiele pomaga, czyli bez zmian jeden wynik
nospor
Cytat
dostaję średnią z pierwszego miesiąca jaki jest w tabeli
Bo może ty pobierasz z zapytania tylko jeden rekord zamiast wszystkich smile.gif
Pokaż kod php

ps:
nie: ORDER BY DATE_FORMAT(DATA, '%Y-%m')
a GROUP BY
Kinool
Meaculpa smile.gif myślałem o GROUP BY wpisałem ORDER smile.gif

Jest jak powinno być smile.gif dzięki
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.