我创建了一个员工出勤表,包含 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/