我有一个每个id有几行的表:
Emp_id date_checkin hours
01 2014-05-14 6
01 2014-05-13 6
02 etc.
我想制作一张最后一张签到的清单,其中列出了该日期最后一次登记的人数。实施例
chk_date
2014-05-14 25
2014-05-13 12
2014-05-11 5
等
我在桌子上使用RIGHT JOIN来获取每个emp的最后日期。它看起来像:
RIGHT JOIN ( Select e.emp_id max(e.checkin_date) as chk_date
from empcheckin as e
group by chk_date) as T1
on T1.chk_datee = q.chk_date
此(内部)查询确实获取每个ID的最后一个签入日期。
问题是,我在主查询中查询什么,因为我不需要其他表中的任何内容?如果我查询所有日期,我会通过数千条记录获取甚至不重要的日期。
另外,我JOIN
ON了什么?
答案 0 :(得分:1)
我真的不认为你需要一个JOIN,而只是一些GROUP BY,就像这样:
SELECT t.last_date_chckin, COUNT(DISTINCT t.emp_id) AS CountEmp
FROM (
SELECT emp_id, MAX(checkin_date) AS last_date_checkin
FROM empcheckin
GROUP BY emp_id
) AS t
GROUP BY t.last_date_chckin