średnia z sumy (InterBase)
matheo101 - 24-04-2006 07:51
średnia z sumy (InterBase)
Tabela: osoba liczba aaa 23 bbb 32 ccc 72 ddd 12 aaa 23 bbb 11 bbb 8
Grzegorz Szyszlo - 26-04-2006 01:21
matheo101 wrote: > Tabela: > osoba liczba > aaa 23 > bbb 32 > ccc 72 > ddd 12 > aaa 23 > bbb 11 > bbb 8
nie wiem czy jest gotowa funkcja, ale czy cos w stylu select sum(liczba)/count(liczba) from tabela; nie zadziala ?
znik.
matheo101 - 26-04-2006 15:08
xxx
Halo. Dziękuję za podpowiedź. Poradziłem sobie inaczej, ale Pana rozwiązanie podsuneło mi pewien pomysł i spróbuję dalej drążyć ten problem. Jeśli chodzi o podpowiedziane zapytanie, to zwraca ono średnią bez wcześniejszego sumowania. Wyrażenie sum(liczba)/count(liczba) jest równoważne wyrażeniu avg(liczba), a ja chcę średnią wyciągnąć po zsumowaniu. Czyli sumowanie musiałoby w przypadku zastosowania powyższego zapytania nastąpić dwa razy. Pierwszy raz w celu sumowania i grupowania - sum(liczba) from tabela group by osoba, a drugi - sum(liczba)/count(liczba) - w celu wyciągnięcia średniej. Chyba trochę namieszałem :-) Poradziłem sobie w ten sposób, że najpierw tworzę drugą tabelę, robię sumowanie i zapisuję wynik do tabeli: insert into tabela2 select osoba, sum(liczba) as suma from tabela group by abonent; Otrzymuję wynik zapisany do tabela2 mniej więcej taki:
Osoba Suma aaaaa 340 bbbbb 450 ccccc 200 dddd 150
Następnie wyciągam średnią na podstawie danych z tabela2: select avg(suma) from tabela2; i otrzymuję interesującą mnie średnią.
Jeszcze raz dziękuję i pozdrawiam .
Grzegorz Szyszlo - 28-04-2006 00:51
matheo101 wrote: > Halo. > Dziękuję za podpowiedź. Poradziłem sobie inaczej, ale Pana rozwiązanie > podsuneło mi pewien pomysł i spróbuję dalej drążyć ten problem. > Jeśli chodzi o podpowiedziane zapytanie, to zwraca ono średnią bez > wcześniejszego > sumowania. Wyrażenie sum(liczba)/count(liczba) jest równoważne > wyrażeniu avg(liczba), > a ja chcę średnią wyciągnąć po zsumowaniu. Czyli sumowanie musiałoby > w przypadku zastosowania powyższego zapytania nastąpić dwa razy. > Pierwszy raz w celu sumowania i grupowania - sum(liczba) from tabela > group by osoba, > a drugi - sum(liczba)/count(liczba) - w celu wyciągnięcia średniej. > Chyba trochę namieszałem :-) > Poradziłem sobie w ten sposób, że najpierw tworzę drugą tabelę, robię > sumowanie i zapisuję wynik do tabeli: > insert into tabela2 select osoba, sum(liczba) as suma from tabela group > by abonent; > Otrzymuję wynik zapisany do tabela2 mniej więcej taki: > > Osoba Suma > aaaaa 340 > bbbbb 450 > ccccc 200 > dddd 150 > > Następnie wyciągam średnią na podstawie danych z tabela2: > select avg(suma) from tabela2; > i otrzymuję interesującą mnie średnią. > > Jeszcze raz dziękuję i pozdrawiam .
moglbys sie obyc bez tabeli posredniej, jesli interbase pozwalalby na wstawienie subselecta po from, tam gdzie normalnie wstawiasz nazwe tabeli. jesli interbase na to nie pozwoli, to tabela2 mozesz tez zapisac jako widok, i interesujaca srednia wyciagac selectem z widoku. dzieki temu robisz wszystko jednym zapytaniem bez kroku posredniego.
znik.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?iso-8859-2?Q?Re:_=5Bdelphi/interbase=5D_W_co_sie_pakowa=E6_=2C_prze?==?iso-8859-2?Q?no=B6no=B6=E6_kodu_-_don't_shoot?=
[InterBase] Max. =?ISO-8859-2?Q?ilo=B6=E6_po=B3=B1cze=F1?=
migracja skryptu SQL z Interbase do MSSQL 2005 Exp.
MS SQL a Interbase format daty?
Migracja z interbase/firebird do MSSQL
export z interbase sql do accessa
Licencja do Delphi na interbase ...
Interbase Linux-> Windows
Zmiana hasła InterBase
Interbase/Firebird SELECT 1+1
zanotowane.pldoc.pisz.plpdf.pisz.pllubiatowo.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|