मैं एक समाधान का उपयोग कर समाप्त हुआ जिसमें एक स्टैक ओवरफ़्लो उत्तर के आधार पर चर शामिल हैं, यहां . यह समाधान प्रदान किए गए अन्य उत्तरों की तुलना में थोड़ा अधिक लचीला और कुशल प्रतीत होता है।
SELECT u.date,
@running_total := @running_total + u.count AS count
FROM (
SELECT COUNT(*) AS count, DATE_FORMAT(FROM_UNIXTIME(created), '%b %d %Y') AS date
FROM {users}
WHERE created >= :start_time AND created <= :end_time
GROUP BY YEAR(FROM_UNIXTIME(created)), MONTH(FROM_UNIXTIME(created)), DAY(FROM_UNIXTIME(created))
) u
JOIN (
SELECT @running_total := u2.starting_total
FROM (
SELECT COUNT(*) as starting_total
FROM {users}
WHERE created < :start_time
) u2
) initialize;
ध्यान दें कि समूह द्वारा, दिनांक स्वरूपण, और श्रेणी की आवश्यकताएं केवल मेरे विशेष प्रोजेक्ट की विशिष्टताएं हैं। इस समाधान का अधिक सामान्य रूप (मूल प्रश्न के अनुसार) होगा:
SELECT u.date,
@running_total := @running_total + u.count AS count
FROM (
SELECT COUNT(*) AS count, DATE(FROM_UNIXTIME(created)) AS date
FROM {users}
GROUP BY date
) u
JOIN (
SELECT @running_total := 0
) initialize;