Zapytanie - Ilość rejestracji na każdy miesiąc.

0

Witam,

zwracam się do forumowiczów o pomoc.
Mam tabele **users **i w niej pole date_register przechowującą rekordy w następującej postaci: 10.01.11, 1129

Chciałem sobie wyciągnąć ile userów w danym miesiącu się zarejestrowało, ociągnąłem to za pomocą:

 
ELECT MONTH( date_register ) as miesiace, count( date_register ) ilosc_na_miesiac
FROM  
	`users` 
GROUP BY 
	MONTH( date_register ) 
ORDER BY
	miesiace 
ASC

teraz chciałbym to rozszerzyć. Tzn. aby owe zapytanie wyświetlało mi też miesiące w których userzy się nie rejestrowali i wstawiać tam liczbę 0.

Czyli np.
Styczeń: 0
Luty: 0
Marzec: 20
Kwiecień: 5
Maj: 21
Czerwiec: 0
...

Pytanie jak się do tego zabrać? (googlowałem troszkę tn. temat, ale nic sensownego nie udało mi się sklecić)

0
SELECT u.MONTH(date_register),m.nazwa, count( date_register ) ilosc_na_miesiac
FROM  
        `users` u LEFT JOIN 
(SELECT 1 miesiac, 'styczeń' nazwa
UNION ALL
SELECT 2, 'luty'
UNION ALL
SELECT 3, 'marzec'
UNION ALL ...) m
ON m.miesiac=u.MONTH(date_register)
GROUP BY 
        u.MONTH(date_register),m.nazwa 
ORDER BY
         u.MONTH(date_register)
ASC
0

hmmm, taka drobna sugestia, w 2010 był maj, w 2011 jest maj i w 2012 też będzie maj. Tak samo jak inne miesiące :) Więc grupowanie po samym miesiącu wydaje się trochę bez sensu. Powinno być po roku i po miesiącu.

0

@Marcin.Miga
Panie Marcinie dziękuje za odp. zweryfikuje ją wieczorem w domu. Jeśli Pan pozwoli to się do tego ustosunkuję

@massther
Drobna uwaga, ale bardzo praktyczna:) - fakt, błąd w moim myśleniu. Dziękuje za zwrócenie uwagi

0

Witam,

podczas wykonywania wyskoczył mi następujący błąd:

#1630 - FUNCTION u.MONTH does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

sprawdziłem odniesienie do manuala jednak nie znalazłem tam odpowiedzi

0

Źle szukałeś, a raczej nie wiedziałeś czego szukać. Nawet jak się przepisuje gotowce nie można wyłączać myślenia.
u to alias do tabeli users, oczywistym jest że nie ma ona funkcji MONTH
Zdaje się że nie napisałeś w jakiej bazie to zapytanie, więc musisz znaleźć sobie funkcję wyciągającą rok oraz miesiąc z typu daty w używanym systemie bazodanowym.

0
  1. To, że jest to alians do tabeli wiem o tym doskonale - wystarczy spojrzeć na mój przykład.
  2. Nie proszę o gotowca, a jedynie o wskazówkę.
  3. Funkcja month w mySQL'u jest - patrz ptk. 1.
    (http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_month)
0

Twoja wskazówka okazała się cenna - dziękuję. Wszystko działa jak powinno + odebrałem lekcję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1