有一个公司,每天能接到来自各个城市的报修请求,工程师接到报修请求后,会上门服务。
要求通过一句SQL,取出所有符合某一天在某个城市某个工程师的报修工单量超过3条的记录,
具体返回的字段要求为: 城市名,工程师名,该工程师当天的报修工单
城市表
City( city_ID Char(6),
City_name varchar(20))
报修记录表
Ticket(
Ticket_id Char(6),
City_id char(6),
Handle_by char(6), 工程师ID
work_date date)
工程师表
Worker(
Worker_id char(6), 工程师ID
WorkName varchar(10))
急 在线等!拜托了,各位大佬
select c.City_name ,t.WorkName,a.ticket_num from (
select City_id,Handle_by,work_date,count(1) ticket_num from Ticket group by City_id,Handle_by,work_date having count(1)>3)a,
City c, Ticket t
where a.City_id = c.City_id and a.Handle_by = t.Worker_id
select c.City_name, w.WorkName, t.* from Ticket t, City c, Worker w
,(
select t.city_ID, t.Handle_by, date_format(t.work_date,'%Y%m%d') as the_day from Ticket t
group by date_format(t.work_date,'%Y%m%d'), t.city_ID, t.Handle_by
having count(1) > 3
) temp
where t.City_id=c.city_ID and t.Handle_by=w.Worker_id and t.city_ID=temp.city_ID t.Handle_by=temp.Handle_by and t.date_format(t.work_date,'%Y%m%d')=temp.the_day
思路反正是这样,可能语法有点小问题,纯记事本手打