Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SOLVED] Średnia krocząca., Jak zrobić?
Blackhole
post
Post #1





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


Witam smile.gif
Załóżmy, że mam taką tabelę:
Kod
id | liczby | srednia
---+--------+---------
1  | 100.03 |
2  | 104.83 |
3  | 107.46 |
4  | 103.29 |
5  | 106.71 |
6  | 110.02 |
7  | 109.74 |
Jak mam teraz wpisać automatycznie do kolumny srednia średnią kroczącą - powiedzmy długości 4 :?:
Podobno w czystym SQL-u nie da się tego zrobić dry.gif


----- Dodane -----
Podam bardziej szczegółowo, o co mi chodzi.
W 4 wierszu kolumny srednia chcę mieć wpisaną średnią z kolumny liczby z wierszy 1-4. W 5 wierszu chcę średnią z wierszy 2-5 (z kolumny liczby), itd.

Ten post edytował Blackhole 28.11.2004, 09:53:44


--------------------
Ściskam prawicę...
Jacek

http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów!
http://jezusimarlena.ovh.org/
YouTube - Egzorcyzmy Anneliese Michel
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Tak - w czystym sql nie jest to możliwe.
Najłatwiej jednak byłoby to zrobić przy pomocy procedury wyswalanej, wywoływanej podczas dodawania nowego rekordu.

Można by spróbować również zaszaleć i spróbować to zrobić przy pomocy subzapytań. hmm.
Np. coś w stylu
  1. UPDATE srednie SET
  2. srednia = (
  3. SELECT avg(srednia) FROM srednie sr WHERE sr.id >= srednie.id )

Nie jestem pewien, czy to zadziała (szczerze mówiąc - mam wątpliwości, czy da to, co byś chciał), ale możesz z tym pokombinować.

W między czasie wyszlo mi jeszcze coś takiego. Nie do konca to jest jeszcze to, ale nie moge dalej popracowac nad tym zapytaniem, bo mój pg się chyba właśnie wysypał.

Może Ci to jednak pomoże?
  1. SELECT srednie.id,
  2. srednie.liczba,
  3. ( SELECT AVG( sr.liczba )
  4. FROM srednie sr
  5. WHERE sr.id IN ( SELECT sr2.id
  6. FROM srednie sr2
  7. WHERE sr2.id <= srednie.id
  8. ORDER BY sr.id DESC LIMIT 4
  9. )
  10. )
  11. FROM srednie GROUP BY id,liczba
  12. ORDER BY id
  13. ;


Ten post edytował DeyV 27.11.2004, 20:51:13


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Blackhole
post
Post #3





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


Wreszcie ktoś odpowiedział smile.gif

DeyV, ciut zmieniłem Twój kod (ten dłuższy) i zadziałało winksmiley.jpg biggrin.gif SELECT wypisuje to, co chciałem!
Wielkie dzięki!!!!! Rkingsmiley.png


--------------------
Ściskam prawicę...
Jacek

http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów!
http://jezusimarlena.ovh.org/
YouTube - Egzorcyzmy Anneliese Michel
Go to the top of the page
+Quote Post
DeyV
post
Post #4





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




A może byś pokazał to pytanie? winksmiley.jpg


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Blackhole
post
Post #5





Grupa: Zarejestrowani
Postów: 283
Pomógł: 1
Dołączył: 15.11.2004
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


A więc tablica nazywa się tbl i jest taka:
Kod
data  | num | śr_kr_4
------+-----+---------
A mój kod to:
  1. SELECT tbl.DATA, tbl.num,
  2. ( SELECT AVG(sr.num)
  3. FROM tbl sr
  4. WHERE sr.DATA IN ( SELECT sr2.DATA
  5. FROM tbl sr2
  6. WHERE sr2.DATA <= tbl.DATA
  7. ORDER BY sr2.DATA DESC LIMIT 4
  8. )
  9. ) AS "śr_kr_4"
  10. FROM tbl GROUP BY tbl.DATA, tbl.num
  11. ORDER BY DATA;
Dostosowałem to jedynie do nazw kolumn i ich typów w mojej tablicy i dodałem "tbl." w grupowaniu w głównym zapytaniu (choć nie chciało mi się sprawdzać, czy bez tego też by działało).

Ten post edytował Blackhole 28.11.2004, 14:39:10


--------------------
Ściskam prawicę...
Jacek

http://doscniewoli.pl/ - wszyscy jesteśmy niewolnikami bankierów!
http://jezusimarlena.ovh.org/
YouTube - Egzorcyzmy Anneliese Michel
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 12:02