问一个sql语句
发布网友
发布时间:2022-04-10 15:55
我来回答
共2个回答
热心网友
时间:2022-04-10 17:24
这是你老师给布置的作业吧?
先分析实体表,销售表s_sale,部门表s_dept,员工表s_emp;
下面给出Oracle Sql的参考语句,其他的数据库可另行修改即可
create table s_sale( emp_id number(8),sale number(6,2),month date,primary key(id,sale));
create table s_dept(id number(8) not null, department varchar2(20),primary key(id));
create table s_emp(id number(8) not null, name varchar2(20),dept_id number(8),primary key(id));
//下面是约束
alter table s_sale add constraints fk_emp_id foreign key(emp_id) reference s_emp(id);
alter table s_emp add constraints fk_emp_id foreign key(dept_id) reference s_dept(id);
问题部分:
1,用到连接和分组
select department "部门名称" ,SUM(sale) "员工销售汇总" from
s_dept,s_emp,s_sale where s_dept.id=s_emp.dept_id and s_emp.id=s_sale.id and s_sale.month='某月'
group by department
2, department='某个部门' month='某月' sum(sale)/count(*)
//用存储过程做
create or replace procere proc_dept_mth(dept varchar2,mth date)
as
v_avg number(6,2); --平均值
v_sum_sale number(6,2); --总销售
v_count number(6); --总人数
begin
--该部门总人数
select count(*) into v_count from s_emp,s_dept
where s_emp.dept_id=s_dept.id and department=dept;
--该部门某月总销售
select SUM(sale) into v_sum_sale
from s_dept,s_emp,s_sale where s_dept.id=s_emp.dept_id and s_emp.id=s_sale.id and s_sale.month=mth and department=dept
v_avg := v_sum_sal/v_count;
dbms_output.put_line(dept||' '|| mth||' 平均销售额: '||v_avg );
end;
exec proc_dept_mth('部门号','月份');
热心网友
时间:2022-04-10 18:42
1
select B.部门名称,sum(A.销售额) as 员工销售额
from A,B,C where A.员工编号=C.员工编号 and B.部门编号=C.所属部门编号
and A.月份=1 group by B.部门名称
2
select B.部门名称,avg(A.销售额) as 员工平均销售额
from A,B,C where A.员工编号=C.员工编号 and B.部门编号=C.所属部门编号
and A.月份=1 group by B.部门名称
月份我用的1月,你自己换