使用复合键计算数据

时间:2015-04-12 22:49:41

标签: php mysql count

我有这些表格:

create table department (
  id int auto_increment,
  dep varchar(10),
  primary key (id));

create table employee (
  ssn varchar(10),
  name varchar(10),
  dep int,
  reg year,
  primary key (ssn,dep),
  foreign key(department) references department(id));

员工具有不同的部门经验并记录在员工表中。我在PHP脚本中显示每个部门的最后一个部门的员工数量时遇到问题。它应该是

no.|  department | number of employees
1  |  A          |       
2  |  B          |      
3  |  C          |      
4  |  D          |      

我希望你明白,因为我不会说英语.. :)

1 个答案:

答案 0 :(得分:1)

您可以获得每位员工的最新日期。然后联接回数据以获取部门,并进行聚合:

select dept, count(*)
from employee e join
     (select ssn, max(reg) as maxy
      from employee
      group by ssn
     ) ee
     on e.ssn = ee.ssn and e.reg = ee.maxy
group by dept;

顺便说一句,您的数据结构很差。您的员工表应该每个员工有一行(带有明显的主键)。然后,您应该有另一个表,称为EmployeeDepartment,其中包含部门信息。