从查询中获取所有月份,包括零计数

卢卡·安东内利

我现在有这个查询:

SELECT DATE_FORMAT(`dataNl`, \'%Y%m\') AS `Ym`, COUNT(*) AS `totale`
FROM `noleggio`
GROUP BY `Ym`

这有助于获取每个月的数据,但是如果某个月的值为 0,则数据库中不存在该数据,因此我无法获取。我需要一个添加剩余月份的查询,将COUNT字段设置0.

我制作了一个 PHP 代码,将带有 0 值的月份添加到数组中,但它仅在年份只有一年时才有效,如果我想获得更多,这需要很多棘手的代码,我认为可能有 SQL 的解决方案.

这是PHP代码:

$t = array();
$m = array();
foreach ($months as $val) {
    $t[] = $val['totale'];
    $m[] = $val['Ym'];
}

for ($i = 0; $i < 12; ++$i) {
    if (in_array($i + 201801, $m) == false) {
        array_splice($t, $i, 0, 0);
    }
}
萨尔曼

这是一个 PHP 解决方案,它需要数据库中的最小和最大日期:

// use the query SELECT MIN(dataNl), MAX(dataNl) FROM ... to
// find the first and last date in your data and use them below
$dates = new DatePeriod(
    DateTime::createFromFormat('Y-m-d|', '2018-01-15')->modify('first day of this month'),
    new DateInterval('P1M'),
    DateTime::createFromFormat('Y-m-d|', '2018-12-15')->modify('first day of next month')
);

// assuming $rows contain the result of the GROUP BY query...
foreach ($dates as $date) {
    $datestr = $date->format('Ym');
    $index = array_search($datestr, array_column($rows, 'Ym'));
    if ($index === false) {
        echo $datestr . ' -> 0' . PHP_EOL;
    } else {
        echo $datestr . ' -> ' . $months[$index]['totale'] . PHP_EOL;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在SQL计数查询中包括零?

从查询列表中的所有查询中获取计数

返回连续月份中所有月份的零值,计数为零

SQL Server 查询以获取日期范围内所有月份的倒数第二个工作日的列表,其中包括日历中的假期

如何在查询中包括零计数结果

获取事件计数 月份(包括零),其中事件是特定的一两张桌子

在单个MySQL查询中获取所有列的不同计数

如何包括一年中的所有月份

Django 聚合查询包括零计数

我的 Sql 查询从选定的月份和年份中获取所有以前的记录

Python-每个日期和月份的PANDAS的所有非零列的计数

MySQL 查询以获取按月分组的过去 12 个月数据,包括零计数

SQL:在表中的计数中包括零

获取缺少的月份计数为零(0)并填充到DataTable中

递归 SQL 查询以获取零件的所有组件

获取在同一 SELECT SQL 查询中获得的列中所有类型值的计数

在mongodb中按年份和月份获取所有文档

如何在laravel中获取所有月份的记录数

Django查询以获取特定列的所有不同值的计数

Django查询以获取ArrayField列的所有不同值的计数

SQL在查询中包括零行

获取一年中每个月的总计,包括没有结果的月份

从对象中获取所有属性,包括引用成员的属性

获取文件中所有长度为n的子字符串的计数?(不包括空格)

从查询中获取所有分组字段

从SQL查询中获取所有员工

如何获取查询中的所有值?

将计数包括在查询结果中

从带有前导零的 LocalDate 获取月份中的某一天