2015-06-25 56 views
0

我已經創建了具有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() 

的總禮物,但我想總的禮物,並分別與他們的總禮物,「總缺席」列顯示的每個indiviual的「總缺席」。我是一個新手在數據庫中,並沒有太多的知識如何排序這個問題.....

回答

0

你可以使用條件聚合,以獲得僱員的行數和行數當員工的缺席是這樣的:

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; 
+0

查詢缺少group by子句。 –

+0

@vkp很好,謝謝!簡單的錯字。 – AdamMc331

+0

它只返回我一個員工的記錄 –