2011-11-30 13 views
6

Veritabanından veri almak için bir sorgu oluşturmaya çalışıyorum, ancak bunu yapamıyorum.Zor bir mySQL sorgusu ayarlama ile ilgili zorluklar

Ben sahte verileri aşağıdaki tablo vardır:

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 

Ben bir sorgu yapmak istiyorum:

  • sıralar Yıl tarih, daha sonra Ay ve ardından Gün
  • Ardından, bu yıllarda her ayın kaç saati olduğu hesaplanmalıdır.

ne demek istediğimi alamazsam: O (tablodan kukla verilerini kullanarak) Böyle bir sonuç şey vermek gerekir:


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

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

ben bazı bilgilere sahip mySQL, ama bu benim için çok şey. :) önceden

teşekkürler sorguda

+0

+1. Sadece şu ana kadar denediğin şeyi gösteren bölümü kaçırdım ... –

cevap

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! Bu kod çalışır. Bu kod baktığımda çok basit. Kötüye, kendim inşa edemedim. Eh, hala öğrenecek çok şey var. xD Çok teşekkür ederim, Jake – DijkeMark

0

bunu kullanın: Örnek verileri ve istenilen çıktıyı gösterdiğin için

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