使用thinkphp和sql方式分别查询z_data_days表以datetime的年月来分组分别统计分组内的数据个数和平均Ld_Data值还有最大LMx_Data值
使用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对月份进行分组。最后通过循环输出查询结果。
原文地址: https://www.cveoy.top/t/topic/i84t 著作权归作者所有。请勿转载和采集!