2011-11-30 37 views
6

Tôi đang cố truy vấn để lấy dữ liệu từ cơ sở dữ liệu, nhưng tôi không thể thực hiện được.Những khó khăn khi thiết lập truy vấn mySQL khó khăn

Tôi có bảng sau với dữ liệu giả:

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 

Tôi muốn thực hiện một truy vấn rằng:

  • Sắp xếp ngày theo năm, sau đó theo tháng và sau đó là ngày
  • Sau đó, nó sẽ đếm bao nhiêu thời gian của mỗi tháng trong những năm này có.

Nếu bạn không có được những gì tôi muốn nói: Nó sẽ cung cấp cho một cái gì đó kết quả như thế này (bằng cách sử dụng dữ liệu giả từ bảng):


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

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

Tôi có một số kiến ​​thức về mySQL, nhưng điều này là nhiều cho tôi. :)

Cảm ơn trước

+0

+1 Để hiển thị các dữ liệu mẫu và các đầu ra mong muốn. Tôi chỉ thiếu phần hiển thị những gì bạn đã thử cho đến nay ... –

Trả lời

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! Mã này hoạt động. Mã này rất đơn giản khi tôi nhìn vào nó. Tệ đến mức tôi không thể tự xây dựng nó. Vâng, vẫn còn rất nhiều điều để học. Cảm ơn bạn rất nhiều, Jake – DijkeMark

0

Sử dụng này trong truy vấn của bạn:

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 
Các vấn đề liên quan