Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] Grupowanie po przedziałach dat
Forum PHP.pl > Forum > Bazy danych
qqrq
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
nevt
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.
qqrq
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ę?
nevt
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.
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.