gpt4 book ai didi

php mysql 根据多个条件获取最新记录并统计

转载 作者:行者123 更新时间:2023-11-30 01:17:23 26 4
gpt4 key购买 nike

我有一张 table - 工作人员

id | staff Name | adress
-------------------------
1 | Mr.A | Any Address
2 | Mr. B | Any Address

第二个表 - 就业历史

eid | staff_id | school_id | type       | grade | date_of_appointmet
--------------------------------------------------------------------
1 | 1 | 1 |Promotion | 17 | 2012-12-12
2 | 1 | 2 |promotion | 18 | 2013-2-2
3 | 2 | 2 |appointment | 17 | 2013-3-3
and so on tables moves

现在的问题是

  • 我想从员工表中获取此人的最新工作及其详细信息
  • 我如何计算有多少 17 年级员工在 school_id 1 工作(请记住,staff_id 1 (mr.a) 现已晋升为 18,现在在 school_id 2 工作。)

最佳答案

select staff_id, max(date_of_appointment) as date_of_appointment
from employment_history
group by staff_id

此查询将返回每个 Staff_id 的最新员工记录。将其转换为子查询并连接到就业历史表

Select grade, count(1) 
from
(select staff_id, max(date_of_appointment) as date_of_appointment
from employment_history
group by staff_id) a
inner join employment_history e on e.staff_id = a.staff_id and a.date_of_appointment = e.date_of_appointment
group by grade

此解决方案假设 Staff_id + date_of_appointment 是唯一键...如果您有多个行,其中一个 Staff_id 在一个日期有多个就业历史条目,则这将不起作用。您需要一些逻辑来使“最近的就业历史记录条目”返回唯一的数据组合...如果 Staff_id + max(date_of_appointment) 不是唯一的,您需要在“a”子查询中提出逻辑返回唯一数据。

关于php mysql 根据多个条件获取最新记录并统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com