mysql - 需要缺席和出席人数以及月份名称

标签 mysql sql select group-by

我需要一个带有缺席和在场计数的月份名称。这是我的数据库查询:

SELECT sid,COUNT(CASE WHEN STATUS ='A' THEN 1 END) AS absent_count,COUNT(CASE WHEN STATUS ='P' THEN 1 END) AS present_count,
      MONTHNAME(attendance_date) AS `Month_Name`
      FROM attendance
      WHERE SID = '2'
      AND campus_id = 2
      GROUP BY sid;

最佳答案

group by sid 没有意义 - 根据您的 where 子句,它始终是 '2'。相反,由于您要计算每个月的名称,因此它应该出现在 group by 子句中:

SELECT   MONTHNAME(attendance_date) AS `Month_Name`, 
         COUNT(CASE WHEN STATUS ='A' THEN 1 END) AS absent_count,
         COUNT(CASE WHEN STATUS ='P' THEN 1 END) AS present_count,
FROM     attendance
WHERE    sid = '2' AND campus_id = 2
GROUP BY MONTHNAME(attendance_date);

关于mysql - 需要缺席和出席人数以及月份名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31177372/

相关文章:

php - MySQL 和 PHP 数据库?

php - 在具有分层值的数组或 MySQL 条目中搜索

mysql - 使用复合索引优化查询,即使用where

javascript - 在 Laravel + AngularJS 中编辑

java - 如何优化结果集返回的大量数据

sql - 如何在单个语句中获取 Northwind 数据库中 Order Details 表中每个产品的总销售额?

mysql - 如何使用不同的条件将数据插入表中

sql - 事务隔离和从SQL Server Express和SQL Server 2005上的多个表中读取

MySQL 选择里面的选择里面的选择

mysql - 根据 MySQL 8 中前一行的值更新行