考试报名
考试报名
考试内容
考试大纲
在线客服
返回顶部

备考刷题,请到

CDA认证小程序

某公司有两个数据表,一个记录了所有员工的基本信息(包括员工ID、姓名、部门,表名为employees),另一个记录了员工的工作时间(包括员工ID、日期、工作小时数,表名为work_hours)。数据分析师需要查询每个员工的总工作小时数,并且只显示那些总工作小时数大于40小时的员工。以下哪个SQL查询语句可以正确实现这一目标()
A. SELECT employees.name, SUM(work_hours.hours) FROM employees CROSS JOIN work_hours ON employees.employee_id = work_hours.employee_id GROUP BY employees.name HAVING SUM(work_hours.hours) > 40;
B. SELECT employees.name, SUM(work_hours.hours) FROM work_hours LEFT JOIN employees ON employees.employee_id = work_hours.employee_id GROUP BY employees.name HAVING SUM(work_hours.hours) > 40;
C. SELECT employees.name, SUM(work_hours.hours) FROM employees RIGHT JOIN work_hours ON employees.employee_id = work_hours.employee_id GROUP BY employees.name HAVING SUM(work_hours.hours) > 40;
D. SELECT employees.name, SUM(work_hours.hours) FROM employees LEFT JOIN work_hours ON employees.employee_id = work_hours.employee_id GROUP BY employees.name HAVING COUNT(work_hours.hours) > 40;
上一题
下一题
收藏
点赞
评论
题目解析
题目评论(0)

A错误。CROSS JOIN 语法错误,并且 CROSS JOIN 不是按 employee_id 连接,而是笛卡尔积,导致错误。B正确。LEFT JOIN 以 work_hours 为主表,确保只统计有工作记录的员工,正确计算 SUM(work_hours.hours)。C正确。RIGHT JOIN 以 work_hours 为主表,也确保只统计有工作记录的员工,正确计算 SUM(work_hours.hours)。D错误。HAVING COUNT(work_hours.hours) > 40 计算的是工作记录条数,而不是总工作小时数,逻辑错误。