2011-11-30 8 views
6

Próbuję wykonać zapytanie, aby uzyskać dane z bazy danych, ale nie mogę tego zrobić.Trudności z konfiguracją trudnego zapytania mySQL

mam następującą tabelę z manekina danych:

id | date 

0 | 2011-11-25 20:12:32 
1 | 2011-11-15 20:12:32 
2 | 2011-11-05 20:12:32 
3 | 2011-10-25 20:12:32 
4 | 2011-10-15 20:12:32 
5 | 2011-10-05 20:12:32 
6 | 2010-10-25 20:12:32 
7 | 2010-04-25 20:12:32 
8 | 2009-07-25 20:12:32 

chcę zrobić kwerendę:

  • Sortuje datę przez rok, a następnie miesiąc i potem cały dzień
  • Następnie należy policzyć, ile czasu każdego miesiąca w tych latach istnieje.

Jeśli nie dostać to, co mam na myśli: powinno dać wynik coś takiego (przy użyciu manekina danych z tabeli):


Year | Month | amount (of rows with that month in that year) 

2011 | 11 | 3 
2011 | 10 | 3 
2010 | 4  | 2 
2009 | 7  | 1 

mam pewną wiedzę mySQL, ale to dużo dla mnie. :)

góry dzięki

+0

+1 Dla przedstawiający przykładowe dane i pożądany wynik. Brakuje mi tylko sekcji pokazującej, co próbowaliście do tej pory ... –

Odpowiedz

10
SELECT YEAR(`date`) AS `year`, 
     MONTH(`date`) AS `month`, 
     COUNT(*)  AS amount 
FROM `table` 
GROUP BY YEAR(`date`), 
      MONTH(`date`) 
ORDER BY `date` DESC 
+0

OMG! Ten kod działa. Ten kod jest tak prosty, kiedy na niego patrzę. Szkoda, że ​​nie mogłem sam tego zbudować. Cóż, wciąż trzeba się wiele nauczyć. xD Bardzo dziękuję, Jake – DijkeMark

0

użyć tego w zapytaniu:

SELECT count(*) from t GROUP BY YEAR(date), MONTH(date) 
1
SELECT YEAR(date) AS Year, MONTH(date) AS Month, COUNT(*) as amount 
FROM table 
GROUP BY LEFT(date, 7) 
ORDER BY date DESC