अगर बनाया गया एक INT फ़ील्ड है, तो आपको FROM_UNIXTIME इसे दिनांक फ़ील्ड में बदलने के लिए कार्य करें, और फिर महीना माह निकालने का कार्य:
SELECT Month(FROM_UNIXTIME(created)), Count(*)
FROM yourtable
WHERE FROM_UNIXTIME(created) >= CURDATE() - INTERVAL 1 YEAR
GROUP BY Month(FROM_UNIXTIME(created))
यह उन सभी पंक्तियों की गणना करेगा जो पिछले 12 महीनों में बनाई गई हैं। कृपया ध्यान दें कि संभवत:वर्ष के अनुसार समूह बनाना भी बेहतर है:
SELECT Year(FROM_UNIXTIME(created)), Month(FROM_UNIXTIME(created)), Count(*)
FROM yourtable
WHERE FROM_UNIXTIME(created) >= CURDATE() - INTERVAL 1 YEAR
GROUP BY Year(FROM_UNIXTIME(created)), Month(FROM_UNIXTIME(created))
यदि आपको पंक्तियों के बजाय पंजीकरण संख्या गिनने की आवश्यकता है, तो आप कुछ इस तरह का उपयोग कर सकते हैं
COUNT(registration_number)
शून्य मानों को छोड़ने के लिए, या
COUNT(DISTINCT registration_number)
केवल अलग-अलग लोगों को गिनने के लिए।
संपादित करें
यदि आपको ऐसे महीने भी दिखाने हैं जिनमें गिनती =0 है, तो मैं इस तरह की एक क्वेरी का उपयोग करूंगा जो वर्तमान और पिछले वर्ष के सभी महीनों को लौटाती है:
SELECT y, m
FROM
(SELECT YEAR(CURDATE()) y UNION ALL SELECT YEAR(CURDATE())-1) years,
(SELECT 1 m UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8
UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12) months;
और फिर मैं एक लेफ्ट जॉइन का उपयोग करूंगा, जो पहली क्वेरी की सभी पंक्तियों को लौटाता है, और केवल दूसरी क्वेरी की पंक्तियाँ जो मेल खाती हैं:
SELECT y, m, Count(yourtable.created)
FROM (
SELECT y, m
FROM
(SELECT YEAR(CURDATE()) y UNION ALL SELECT YEAR(CURDATE())-1) years,
(SELECT 1 m UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8
UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12) months) ym
LEFT JOIN yourtable
ON ym.y = YEAR(FROM_UNIXTIME(yourtable.created))
AND ym.m = MONTH(FROM_UNIXTIME(yourtable.created))
WHERE
(y=YEAR(CURDATE()) AND m<=MONTH(CURDATE()))
OR
(y<YEAR(CURDATE()) AND m>MONTH(CURDATE()))
GROUP BY y, m
(कृपया ध्यान दें कि यहां मैं केवल पिछले 12 महीनों पर विचार कर रहा हूं, इसलिए यदि हम अप्रैल 2013 के मध्य में हैं तो यह मई 2012 - 13 अप्रैल के अंतराल में पंक्तियों की गणना करेगा, यदि यह सही व्यवहार नहीं है तो कृपया मुझे बताएं)पी>