Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL] Grupowanie po przedziałach dat
qqrq
post
Post #1





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


Witam

Mam taką sytuację - jest sklep internetowy, w nim mam tabelkę "ZAMÓWIENIA", a w tej tabelce pole "ZAKOŃCZONO". Pole to jest puste (NULL), jeśli proces realizacji zamówienia jeszcze się nie zakończył. Jeżeli zamówienie jest zakończone, to jest tam data jego zakończenia (np.: "2007-09-12 13:55:14"). Tabelka "ZAMÓWIENIA" ma też pole "WARTOŚĆ" - wartość zamówienia w PLN (np. "29.99").
I tu pojawia się problem. Chciałbym jednym zapytaniem wyciągnąć z tej tabelki sumy wartości od zamówień zakończonych pogrupowane względem tygodni i miesięcy (to właściwie dwa zapytania, ale chodzi mi o to, żeby każde z nich zrealizować za jednym zamachem). Chciałbym przykładowo otrzymać:


dla miesięcy:

2008-02: 1200 zł
2008-03: 3200 zł
2008-04: 4397 zł


dla tygodni:

2008-09-01 - 2008-09-07: 230zł
2008-09-08 - 2008-09-16: 213zł
2008-09-17 - 2008-09-24: 490zł


Da się tak wogóle? blinksmiley.gif


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


1. coś w stylu:
  1. SELECT DATE_FORMAT(`zakonczono`, '%Y-%m') AS `miesiac`, SUM(a_id) AS `suma` FROM `zamowienia` GROUP BY `miesiac` HAVING `miesiac` IS NOT NULL;


2. a tu coś w rodzaju (zwraca nr tygodnia, datę dla poniedziałku i niedzieli w danym tygodniu możesz już policzyć sobie w php...)
  1. SELECT DATE_FORMAT(`zakonczono`, '%Y-%v') AS `tydzien`, SUM(a_id) AS `suma` FROM `zamowienia` GROUP BY `tydzien` HAVING `tydzien` IS NOT NULL;

powodzenia.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
qqrq
post
Post #3





Grupa: Zarejestrowani
Postów: 418
Pomógł: 8
Dołączył: 16.11.2006

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


nevt => And that's our Hitler! Dzięks, dokładnie o to mi chodziło. ;o)
Oczywiście mam rozumieć, że twój sposób to MySQL, pod Oracle-em dajmy na to tego nie odpalę?

Ten post edytował qqrq 9.09.2008, 08:36:05


--------------------
Go to the top of the page
+Quote Post
nevt
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


tak to jest MySQL ale i Oracle i MSSQL mają podobne funkcje do konwersji danych typu data/czas - wystarczy poszperać w manualach - teraz przynajmniej wiesz czego szukać - powodzenia.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
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: 22.08.2025 - 09:53