【问题标题】:Using count() to output total entries per month as well as the month使用 count() 输出每个月的总条目数以及月份
【发布时间】:2015-11-23 22:48:12
【问题描述】:

我尝试了一些搜索,结果找到了 count() 函数来让我更接近我的目标,但已经停止了一点。这是我的代码现在的样子:

$sql = "SELECT COUNT( * ) as Count
FROM AttendanceDB
WHERE YEAR( class_time ) =  '2015'
AND studentid = '$studentid'
AND furikae = 0
GROUP BY MONTH( class_time )";

然后我用echo $row['Count'];输出数据。

这使我可以合计 2015 年每月的行数,然后输出答案。现在我想做的是在每一行中输出月份以及总数。我可以预先格式化所有内容,但是有一些学生 ID 的条目从一年的中途开始,这意味着前几个月不会输出任何结果。

如何从数据库中选择月份并同时使用计数功能?谢谢

【问题讨论】:

  • 表 ddl,样本输入和所需输出

标签: php mysql count


【解决方案1】:

你可以使用聚合函数

$sql = "SELECT COUNT( * ),max(YOUR MONTH COLUMN) as MONTH as Count
FROM AttendanceDB
WHERE YEAR( class_time ) =  '2015'
AND studentid = '$studentid'
AND furikae = 0
GROUP BY MONTH( class_time )";

【讨论】:

    【解决方案2】:

    以下是我认为对你有帮助的:

    $sql = "SELECT MONTH( class_time ) AS month, COUNT( * ) as Count
    FROM AttendanceDB
    WHERE YEAR( class_time ) =  '2015'
    AND studentid = '$studentid'
    AND furikae = 0
    GROUP BY MONTH( class_time )";
    

    【讨论】:

    • 非常感谢,这非常有效。现在看起来很简单,它正盯着我看。使用日历名称而不是数字输出月份的简单方法是什么?也许使用日期功能?
    • 我很高兴这个答案对您有所帮助,您能否将其作为正确答案进行检查。谢谢。
    【解决方案3】:

    怎么样:

    $sql = "SELECT MONTH(class_time) AS m, COUNT(*) AS c
        FROM AttendanceDB WHERE YEAR(class_time) = '2015'
        AND studentid = '$studentid'
        AND furikae = 0
        GROUP BY m";
    

    这样您就可以将月份作为一个单独的列,在结果中也将显示为$row['m'],每月的计数为$row['c']。 (我避免使用与 MySQL 函数名称相同的名称,因此使用 mc。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 2012-12-08
      • 2017-02-18
      • 1970-01-01
      相关资源
      最近更新 更多