Opracowanie zbiorczych podsumowań oraz generowanie statystyk zawartości danej tabeli to jedno z bardziej żmudnych zadań do wykonania. Pewnie nie raz zastanawialiście się jak w szybki sposób zliczyć ilość rekordów wpisanych w danym miesiącu w danym roku. Funkcję zliczenia ilości rekordów zapisanych do tabeli w podziale na miesiące można wykonać za pomocą PHP, wykonując stosowne działania w oparciu o wynik zapytania zwracającego pełną zawartość tabeli. Nie jest to jednak zbyt optymalny sposób na uzyskanie wyniku.
W bazie danych MySQL (wykonując tylko jedno zapytanie), można bardzo szybko uzyskać zestawienie prezentujące liczbę rekordów zapisanych do tabeli w danym miesiącu danego roku. Poniżej prezentuję przykładowe zapytanie SQL zwracające taki wynik:
SELECT COUNT(*), DATE_FORMAT(date,'%Y-%m') as y_m FROM `page` GROUP BY y_m ORDER BY y_m DESC
Zapytanie to operuje na tabeli o następującej strukturze:
id_page (int 6)
title (varchar 32)
content (text)
date (datetime)
Zwrócony wynik będzie mieć następującą postać:
y_m liczba
2013-07 10
2013-06 5
2013-05 12
Powyższe zapytanie wykorzystuję funkcję DATE_FORMAT()
, która pozwala na sformatowanie daty wedle określonych kryteriów. W tym przypadku wykorzystałem format %Y – rok w postaci 4 cyfr, %m – miesiąc w postaci 2 cyfr. Dodatkowo wykonane jest pogrupowanie oraz zliczenie rekordów dla tak zwróconej daty wpisu.