mysql - 想要统计每个员工的出席和缺席情况

标签 mysql sql

我创建了一个员工出勤表,包含 3 列 emp_name、emp_present 和日期,

mytable 中没有主键

我正在使用此查询来获取员工的礼物总数

  SELECT `emp_name`, `emp_present`,(select sum(emp_present='present') 
  from empattendance) as 'total presents', `date` FROM `empattendance` where date=curdate()

但我想获得每个人的总出席数和“总缺席数”,分别显示在总出席数和“总缺席数”列中。我是数据库新手,对如何解决这个问题没有太多了解......

最佳答案

您可以使用条件聚合来获取员工在场的行数和员工缺席的行数,如下所示:

SELECT emp_name, 
  SUM(emp_present = 'present') AS numPresence, 
  SUM(emp_present = 'absent') AS numAbsence
FROM employees
GROUP BY emp_name;
<小时/>

编辑:

如果您想要获得出席和缺席的运行总计,则需要使用变量:

SET @present := 0;
SET @absent := 0;
SELECT emp_name, dateColumn, 
   IF(emp_present = 'present', @present := @present + 1, @present) AS numPresence
   IF(emp_present = 'absent', @absent := @absent+ 1, @absent) AS numAbsense
FROM myTable
ORDER BY dateColumn;

关于mysql - 想要统计每个员工的出席和缺席情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31058126/

相关文章:

php - 通过多个不同名称的复选框从mysql获取数据

php - 在mysql数据库中存储排名

java - 从HIVE表中复制副本,需要写出删除的记录并获取计数

SQL索引与全表扫描

mysql - MYSQL如何让一条SELECT语句显示超过1000条记录?

MySQL 排除和要求

mysql - 限制 group_concat 中的串联

SQL 将多列拆分为多行

java - 在带有 JFrame 表单的 Netbeans derby 中使用带有 WHERE 子句的 SELECT 语句

mysql - 为什么一个查询比另一个查询快?