maniak11
9.07.2008, 12:31:52
Witam, mam spory problem z zapytaniem SQL, do tego stopnia ,że nie wiem czy jest to wykonalne, mianowicie mam zapytani:
kolumny
sub_id, opis_id, waga, srednia
2, 15, 30, 2.08
2, 16, 40, 1.16
3, 18, 20, 2.45
2, 20, 25, 2.01
przy czym kolumna 'srednia' jest wynikiem zapytania (AVG(points)*(waga/100) ) as srednia
a potem grupowanie po: GROUP BY sub_id, opis_id
i teraz pytanie: da się zrobić to zapytanie tak aby wartośći "srednia" były zsumowane wszędzie tam gdzie "sub_id" jest identyczne? Czyli wyników będzie tyle ile jest różnych "sub_id"
W tym przypadku powinno być coś takiego:
sub_id, opis_id, waga, srednia
2,'cokolwiek','cokolwiek', 5,25 (2,08+1,16+2,01)
3, 'cokolwiek','cokolwiek',2,45
Jak dam samo GROUP BY sub_id to "srednia" nie bedzie prawidlowa
Czy da się zrobi coś takiego? Siedzę nad tym już 3h i wymiękam powoli:(
artega
9.07.2008, 14:04:13
Użyj funkcji
SUMSELECT sub_id, opis_id, waga, SUM(srednia) AS srednia FROM tabela GROUP BY sub_id
maniak11
9.07.2008, 18:17:32
Gdyby to było takie proste to bym nawet nie pisał tutaj, ale dzięki i tak za pomoc.
Chodzi o to że taki wynik jaki napisałem jest tylko i wyłącznie w przypadku jak użyje GROUP BY sub_id, opis_id, ehh no nic, będę musiał się jeszcze sporo namordować z tym czuje coś.
nospor
9.07.2008, 18:21:23
Musisz uzyc podzapytanie.
Zapytanie głowne będzie sumowac srednie, a srednie beda wyliczane wlasnie w podzapytaniu
piotrooo89
9.07.2008, 20:14:03
możesz napisać jak ty to robisz. tzn jak wyświetlasz te rekordy to może coś będzie można pomóc i podaj kolumny w tabeli
artega
9.07.2008, 20:45:03
Być może ten przykład coś rozjaśni.
SELECT sub_id, opis_id, waga, SUM((SELECT AVG(points)*(waga/100) FROM tabela t2 WHERE t2.id=t1.id)) FROM tabela t1 GROUP BY sub_id
nospor
9.07.2008, 21:24:51
@artega chodzilo mi, by te podzapytanie bylo we from a nie w sum.
No chyba ze ci dziala.
artega
9.07.2008, 21:59:10
Cytat
@artega chodzilo mi, by te podzapytanie bylo we from a nie w sum.
No chyba ze ci dziala.
Działa, poprawnie składniowe a nawet wyniki poprawne

tylko czy zgodnie z ideą maniak11?
maniak11
10.07.2008, 08:53:14
Dzięki wszystkim za pomoc, musiałem rozwiązać to za pomocą php, choć zapewne działa to ciut wolniej bo z tego co wiem silnik bazodanowy znacznie szybciej przetwarza dane niż php. Dzięki i tak za pomoc wszystkim.
Pozdrawiam