Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak zsumowac wartosci rekordow z tabeli?
Forum PHP.pl > Forum > Bazy danych > MySQL
Gumiak
Powiedzmy ze chce zsumowac wszystkie wartosci rekordow pola minuty. Jak to zrobic?
Bo przeszukalem forum i nie znalazlem nic o tym.
Jabol
na pewno był
Kod
SELECT SUM(minuty) FROM tabela;
scanner
Że nie wspomne o manualu do MySQL.
Zastanawiam się nad skasowaniem wątku wieczorem.
To forum nie propaguje lenistwa.
Gumiak
szukałem w manualu mysql ale znalazlem tylko funkcje matematyczne i algebraiczne, a poza tym manuala po polsku do mysql nie znalazlem a z angielskim to ja nie najlepiej stoje.
scanner
http://slownik.onet.pl - słowa kluczowe i funkcje zawsze są w mianowniku, wiec nie ma problemu.
Jabol
bardzo fajne manuale dla początkujących (po polsku) można znaleźć na mysqlfaq.prv.pl.
dragossani
Wystarczyło zajrzeć do ogłoszenia na tym forum. Jest link i do polskiego i do angielskiego manuala. To ogłoszenie po coś tam wisi...
Gumiak
szukam i nie moge znalezc, a ten kod podany Jabola nie robi tego co powinien, bo np. mam w bazie 10 rekordow i w polach minuty sa rozne wartosci np. 500, 200,234 itd.

i nie sumuje mi tego tylko drukuje wartosc 1 wielokrotnie.
Fo
nie sumuje ? to moze bys tak troszke kodu umiescil - bo to sie ma sumowac tylko pewnie blad masz gdzies po drodze :wink:
dragossani
Funkcja SUM to nie funkcja matematyczna tylko agregująca, więc wśród matematycznych jej nie szukaj.
Kod nie działa bo brakuje klauzuli grupującej.
Kod
SELECT SUM(minuty) FROM tabela GROUP BY klucz_glowny_tabeli;

Opisu po polsku nie ma, bo jeszcze nikt nie przetłumaczył. Tu masz oryginalny manual na temat GROUP BY.
Santos
Ojej, glupoty Panie kolego opowiadacie. Po pierwsze primo klauzula GROUP BY jest opcjonalna, po drugie grupowac mozna wedle tylko czego dusza zapragnie (dowolna kolumna, wcale nie musi byc kluczowa). W przypadku polaczenia z funkcjami agregujacymi grupowany argument jest niejednokrotnie argumentem funkcji agregujacej, ale ma to konkretne zastosowanie, a nie bo - "tak ma byc". Przykladem moze byc zsumowanie dla danego kontrachenta (identyfikowanego NIPem) wszystkich wartosci np. kwot netto
Kod
SELECT SUM(kwota_netto) AS Netto FROM tabela WHERE nip='siakis_tam_nip' GROUP BY nip;

Albo dla wszystkich kontrachentow:
Kod
SELECT SUM(kwota_netto) AS Netto FROM tabela GROUP BY nip;


Uzycie aliasu AS Netto tyz jest opcjonalne. W tym drugim przypadku GROUP BY dziala troszke jak DISTINC zalatwiamy jednak po drodze sumowanie.

Nie wspomnianu tutaj o jednej istotnej sprawie - funkcja agregujaca SUM() jako argumenty przyjmuje jedynie wartosci liczbowe i to tutaj bym sie doszukiwal problemu - czy pole przechowujace owe minuty jest polem liczbowym?

Pozdrowka

Santos
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.