sql的复杂查询问题:

2,有三张表:(15*2)Employee职工(工号,姓名,性别,年龄,部门)(no,name,sex,age,department)Wage工资(工号,工资金额)(no... 2, 有三张表:(15*2)
Employee 职工 (工号,姓名,性别,年龄,部门)(no,name,sex,age,department)
Wage工资 (工号,工资金额)(no,amount)
Attend出勤 (工号,日期,是否出勤)(no,date,attendance)

对以下2个问题写出SQL语句:
1) 查询工资金额大于8000且2010年缺勤次数小于5次的职工工号和姓名。
2) 统计2010年12月与2010年1月的对比情况,包括员工的工资平均数,出勤率平均数。
展开
 我来答
是勇敢
2012-02-27 · 希望快乐渡过第一天。
是勇敢
采纳数:914 获赞数:1799

向TA提问 私信TA
展开全部
no,date,attendance
12 2010-10-10 Y
13 2010-11-12 N
1)
思路:先查工资大于8000,再并列查询,小于5次
2010年小于5次的
select A.no count(A.no) from Attend A where attendance group by substring(date,0,4) having count(A.no)<5
故,综上得出结论
select E.no,E.name from Employee E left join Wage W on E.no=W.no left join (select A.no count(A.no) from Attend A where attendance group by substring(date,0,4) having count(A.no)<5)A on E.no=A.no where W.amount > 8000;
2)
思路:先查工资平均数,分别查不同的日期即可
select W.amount/sum(W.amoun),A.no,A.attendance/sum(A.attendance) from Attend A left join Wage W on W.no=A.no where substring(date,0,6)='201212' group by A.no
select W.amount/sum(W.amoun),A.no,A.attendance/sum(A.attendance) from Attend A left join Wage W on W.no=A.no where substring(date,0,6)='201201' group by A.no
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式