首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将成员加入日期/成员增长数据组织为可抓取的块

将成员加入日期/成员增长数据组织为可抓取的块
EN

Stack Overflow用户
提问于 2010-08-20 09:37:41
回答 1查看 72关注 0票数 0

我正在涉足pChart,并想从一个简单的线形图开始,它显示了随着时间的推移会员人数的增长。

Y轴将是成员数

X轴就是时间

对于每个时间数据点,我需要一个对应的总成员数据点。

我的user表的结构是:[user_id] [join_date]

今天早上我在上班的公交车上想到的方法是:

代码语言:javascript
复制
$Q = " SELECT MONTH(join_date), DAY(join_date), COUNT(user_id)"
   . " FROM user_basic_data GROUP BY join_date";
$R = mysql_query($Q);

$dateS = '';
$totalS = '';
$c = 0; // total members counter
while ($row = mysql_fetch_row($R)) {
    $dateS .= $row[0].'-'.$row[1].','; // month-day,month-day,month-day
    $c = $row[2] + $c; // new total for new date
    $totalS .= $c.','; // total1,total2,total3
}
// trim trailing commas
$dateS = substr($dateS, 0, -1);
$totalS = substr($totalS, 0, -1);

echo "<p>$dateS</p>"; // Ex: 8-10,8-15,8-20
echo "<p>$totalS</p>"; // Ex: 12,17,23

这些字符串格式是pChart喜欢的数据格式,我知道当前的查询也需要一个年份值才能真正使用,所以请不要在这些点上挂断。

我想知道是否有更好的方法来获得随着时间的推移不断变化的会员总数。我猜在MySQL中处理它会更快,但我想不出一种方法。

谢谢您抽时间见我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-20 09:44:58

要获得运行总数,请使用:

代码语言:javascript
复制
SELECT DISTINCT
       DATE(ubd.join_date) AS dt, 
       (SELECT COUNT(*)
          FROM user_basic_data t
         WHERE DATE(t.join_date) <= DATE(ubd.join_date)) AS num_users
  FROM user_basic_data ubd 

通过将If you still want Month-Day - use DATE_FORMAT替换为以下内容,DATE返回YYYY-MM-DD;DATE(udb.join_date)格式的日期:

代码语言:javascript
复制
DATE_FORMAT(ubd.join_date), '%m-%d')

您不需要在PHP中创建逗号分隔列表的逻辑-只需填充两个变量:

代码语言:javascript
复制
$Q = " SELECT GROUP_CONCAT(x.dt) AS dates,
              GROUP_CONCAT(x.num_users) AS totals
         FROM (SELECT DISTINCT
                      DATE(ubd.join_date) AS dt, 
                      (SELECT COUNT(*)
                         FROM user_basic_data t
                        WHERE DATE(t.join_date) <= DATE(ubd.join_date)) AS num_users
                 FROM user_basic_data ubd ) x";
$R = mysql_query($Q);

while ($row = mysql_fetch_row($R)) {
   echo "<p>$row[0]</p>"; // Ex: 8-10,8-15,8-20
   echo "<p>$row[1]</p>"; // Ex: 12,17,23
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3527610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档