这是一道sql题,公司给我做,但是我越做越觉得奇怪,求大神帮忙看一下

有一个公司,每天能接到来自各个城市的报修请求,工程师接到报修请求后,会上门服务。
要求通过一句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))

sql

3个回答

急 在线等!拜托了,各位大佬

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

Wesley1996
Wesley1996 直接回复大佬报的错把:[Err] 42S22 - [SQL Server]列名 'Worker_id' 无效。 42S22 - [SQL Server]列名 'WorkName' 无效。
接近 3 年之前 回复
jzja123
jzja123 少了个日期:select c.City_name ,t.WorkName,a.work_date,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
接近 3 年之前 回复

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

思路反正是这样,可能语法有点小问题,纯记事本手打

zhangcm_137
弓长张_ 回复Wesley1996: 你是SQL SERVER?还以为你是MySQL,换个函数
接近 3 年之前 回复
Wesley1996
Wesley1996 and 我加了 但是报了这个错: [Err] 42000 - [SQL Server]'date_format' 不是可以识别的 内置函数名称。
接近 3 年之前 回复
Wesley1996
Wesley1996 回复zhangcm_137: 感谢大佬们,我先试试
接近 3 年之前 回复
zhangcm_137
弓长张_ t.city_ID=temp.city_ID 和 t.Handle_by=temp.Handle_by 之间少了个and
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问