使用ThinkPHP的查询构造器和SQL语句可以分别实现对z_data_days表以datetime的年月来分组,并统计分组内的数据个数、平均Ld_Data值和最大LMx_Data值。

使用ThinkPHP的查询构造器:

use think\facade\Db;

// 使用查询构造器进行查询
$data = Db::name('z_data_days')
    ->field('DATE_FORMAT(datetime, "%Y-%m") AS month')
    ->field('COUNT(*) AS count')
    ->field('AVG(Ld_Data) AS avg_Ld_Data')
    ->field('MAX(LMx_Data) AS max_LMx_Data')
    ->group('month')
    ->select();

// 输出查询结果
foreach ($data as $item) {
    echo '月份:' . $item['month'] . '<br>';
    echo '数据个数:' . $item['count'] . '<br>';
    echo '平均Ld_Data值:' . $item['avg_Ld_Data'] . '<br>';
    echo '最大LMx_Data值:' . $item['max_LMx_Data'] . '<br><br>';
}

使用原生SQL语句:

use think\facade\Db;

// 使用原生SQL语句进行查询
$sql = "SELECT DATE_FORMAT(datetime, '%Y-%m') AS month, COUNT(*) AS count, AVG(Ld_Data) AS avg_Ld_Data, MAX(LMx_Data) AS max_LMx_Data
        FROM z_data_days
        GROUP BY month";
$data = Db::query($sql);

// 输出查询结果
foreach ($data as $item) {
    echo '月份:' . $item['month'] . '<br>';
    echo '数据个数:' . $item['count'] . '<br>';
    echo '平均Ld_Data值:' . $item['avg_Ld_Data'] . '<br>';
    echo '最大LMx_Data值:' . $item['max_LMx_Data'] . '<br><br>';
}

以上代码中,假设z_data_days为表名,datetime为日期时间字段,Ld_Data为Ld_Data字段,LMx_Data为LMx_Data字段。使用DATE_FORMAT函数将datetime字段按照%Y-%m的格式转换为年月。COUNT(*)用于统计数据个数,AVG(Ld_Data)用于计算平均Ld_Data值,MAX(LMx_Data)用于获取最大LMx_Data值。使用GROUP BY对月份进行分组。最后通过循环输出查询结果。

使用thinkphp和sql方式分别查询z_data_days表以datetime的年月来分组分别统计分组内的数据个数和平均Ld_Data值还有最大LMx_Data值

原文地址: https://www.cveoy.top/t/topic/i84t 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录