Farklı aylar ve yıllar Seçme ve değerlerin daha sonra arıza için

3 Cevap php

Ben istatistikler oluşturmak için Open Flash Chart kullanıyorum ve ben yapmak gerekiyor şeylerden biri bir yığılmış çubuk grafik oluşturmak olduğunu.

Mantıken i üzerinden bu gruptan bütün çeşitli satırlar, soruşturma web sitesi üzerinden yapılan bir ziyaretçi (farklı türde, yani sonra Grubu'nun tüm farklı Ay / Yıl kombinasyonları, vb Aralık 2009, Ocak 2010, Şubat 2010 ve muktedir gerekir E-posta, phonecall yoluyla)

Şu anda tablosu özellikleri şöyle:

id (int, auto increment) date_time(date time format) type (enum, visit, website, phone, email)

Herhangi bir öneriniz? Ben birkaç şey denedim ve çok şans olmadı.

3 Cevap

Böyle bir şey çalışması gerekir:

select count(*), type, YEAR(date_time), MONTH(date_time) from `table` 
group by type, YEAR(date_time), MONTH(date_time)

Yıl ve aya göre gruplandırmak için SQL şöyle olabilir:

SELECT DATE_FORMAT(date_time, '%Y-%m') AS yearmonth, 
       COUNT(*) AS count_month
FROM table_name 
GROUP BY yearmonth

Sen bir ay alanı olan bir tablo oluşturmak, ve örneğin, ilgilendiğiniz ay boyunca doldurmak olabilir:

StartOfMonth
2010-01-01
2010-02-01
2010-03-01
...

Sonra left join Tüm aylarında gruba kullanabilirsiniz:

select     
    year(mt.StartOfMonth)
,   month(mt.StartOfMonth)
,   e.type
,   count(*)
from       MonthTable mt
left join  Enquiries e
on         mt.StartOfMonth <= e.EnquiryDate
           and e.EnquiryDate < mt.StartOfMonth + interval 1 month
where      mt.StartOfMonth <= NOW()
group by   year(mt.StartOfMonth), month(mt.StartOfMonth), e.type