gpt4 book ai didi

php - 将成员(member)加入日期/成员(member)成长数据组织成可图形化的 block

转载 作者:行者123 更新时间:2023-11-29 14:59:51 25 4
gpt4 key购买 nike

我正在尝试使用 pChart,并希望从一个简单的折线图开始,显示成员(member)数量随时间的增长情况。

Y 轴是成员数量
X 轴是时间

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

我的用户表的结构如下: [user_id] [join_date]

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

$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 中处理它会更快,但我想不出一种方法来做到这一点。

感谢您的宝贵时间。

最佳答案

要获取运行总计,请使用:

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

DATE返回日期为 YYYY-MM-DD; If you still want Month-Day - use DATE_FORMATDATE(udb.join_date) 替换为:

DATE_FORMAT(ubd.join_date), '%m-%d')

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

$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
}

关于php - 将成员(member)加入日期/成员(member)成长数据组织成可图形化的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com