Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Suma wybranych rekordów
Pronigo
post 24.08.2006, 09:14:24
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.05.2005
Skąd: Gdańsk

Ostrzeżenie: (10%)
X----


Witam mam tablicę o nazwie grunt a w niej pola: id, typ, cena. Chciałbym zsumować wszystkie rekordy cena jeżeli typ = coś tam, czytałem o SUM ale nie zrozumiałem nic z niego sad.gif

Aby to badziej zoobrazować:
SELECT suma[cena] FROM grunt WHERE id = x
Go to the top of the page
+Quote Post
mike
post 24.08.2006, 09:24:27
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Boże Ty widzisz a nie grzmisz.
Jak nie zrozumiałeś? Przecież w dokumentacji przykłady sa takie że nawet ... zrozumie.

  1. SELECT SUM(cena) FROM grunt WHERE id = x
Go to the top of the page
+Quote Post
Balor
post 23.07.2010, 11:53:59
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 23.06.2010

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


Witam, nie chce mi się tworzyć nowego wątku to dopisze sobie tu.
Mam taką tabele:

id typ data
3 k 2010-07-23 11:22:59
2 o 2010-07-23 11:27:30

i chodzi mi o to, że potrzebuje zapytanie, które wybierze mi z tej tabeli np.5 najczęściej występujących (id) w ostatnim miesiącu, ze zliczeniem ilości wystąpień.

Mam nadzieję, że w miarę jasno wyjaśniłem problem.
Liczę na jakąś podpowiedz. Pozdrawiam i nie krzyczcie za miejsce postu, bo podobny temat trochęwinksmiley.jpg


--------------------
Bo ludzie myślą, że to takie hop-siup...
programy na zlecenie, oprogramowanie dla firm, aplikacje desktopowe
Go to the top of the page
+Quote Post
phpion
post 23.07.2010, 11:59:39
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




COUNT(*) - do zliczenia wystąpień
WHERE + funkcje operujące na datach - do wybrania interesującego przedziału czasowego
GROUP BY - do zgrupowania danych względem pola (tutaj: id)
ORDER BY - do posortowania według zliczonych wystąpień
LIMIT - do ograniczenia wyników (tutaj: 5)

W razie problemów pisz podając swoje aktualne rozwiązanie.

Ten post edytował phpion 23.07.2010, 12:00:21
Go to the top of the page
+Quote Post
thek
post 23.07.2010, 12:00:56
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Algorytm:
1. Wybierz wszystkie rekordy od daty A do daty B
2. Pogrupuj je po wybranej kolumnie
3. Zsumuj pogrupowane wiersze
4. Posortuj według sumy malejąco
5. Wybierz tyle ile chcesz.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Balor
post 23.07.2010, 13:11:17
Post #6





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 23.06.2010

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


Dzięki za pomoc, oto co mi wyszło
  1. SELECT count(*), id, typ, DATA FROM `punkty`
  2. WHERE (DATA >= date_sub( NOW(), INTERVAL 3 HOUR))
  3. GROUP BY id
  4. ORDER BY count(id) ASC LIMIT 3

no i chyba działa:D
Pozdrawiam


--------------------
Bo ludzie myślą, że to takie hop-siup...
programy na zlecenie, oprogramowanie dla firm, aplikacje desktopowe
Go to the top of the page
+Quote Post
thek
post 23.07.2010, 14:24:58
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Prawie dobrze... Tylko order jest nie w tą stronę winksmiley.jpg
Poza tym sugestia na przyszłość... Nie nazywaj kolumn słowami zastrzeżonymi dla mysql (data) bo prosisz się o kłopoty sam. Jeśli coś liczysz, sumujesz i jest to kolumna wynikowa w liście SELECT to warto temu nadać alias. Prościej potem przez nazwę się odwołać, a i w order by wygodniej się aliasem posłużyć. Z innych rzeczy to zamiast pchać liczenie czasu do bazy, można już to po stronie PHP zrobić.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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 Wersja Lo-Fi Aktualny czas: 26.04.2025 - 02:35