【问题标题】:sql tasks for beginners适合初学者的sql任务
【发布时间】:2013-10-21 06:01:48
【问题描述】:

我有 3 个问题无法解决。
存在2张表

CREATE TABLE T_DEPARTMENT
(
  ID    NUMBER,
  NAME  VARCHAR2(100 BYTE)

CREATE TABLE T_EMPLOYEE
(
  ID             NUMBER,
  DEPARTMENT_ID  NUMBER,
  CHIEF_ID       NUMBER,
  NAME           VARCHAR2(100 BYTE),
  SALARY         NUMBER
)

问题:

1 - 获取部门名称及其员工人数,员工人数超过20人

2 - 显示各部门消耗占总预算的百分比

3 - 找出比该部门最高工资的员工高出不到 10% 的主管工资。

我试了这些,都不对:

1.

select id from t_employee group by id having count(*) <= 20

2.

select sum (salary) from t_employee group by id

3.

select e1.name from t_employee e1, t_employee e2 where e2.id = e1.chief_id and e1.salary < e2.salary*0.1 all is uncorrect

【问题讨论】:

  • 建议尝试一些查询,如果您遇到任何错误,请更新问题。
  • 旁注。对于您提供的那些 DDL,最好附上 insert 语句来用数据填充表,并提供预期输出的模型。
  • 1 - 通过 id 从 t_employee 组中选择 id,count(*)

标签: sql oracle task


【解决方案1】:

第一部分可以使用这个查询:

select 
t1.name,
count(t1.name) as EmployeesCount,
case when count(t1.name)>20 then 'True' else 'False' end as moreThan20 
from 
T_DEPARTMENT t1,
T_EMPLOYEE t2 
where 
t1.id = t2.department_id 
group by t1.name;

第二个:

select 
name,
salary,
(salary * 100) / (select sum(salary) from hatest2)  as percentage
from 
T_EMPLOYEE
group by salary;

最后我想你有一个表名为 T_CHIEF 并且这个选择显示了不是主管的人员:

select 
t2.name  
from 
T_CHIEF t1,
T_EMPLOYEE t2 
where 
t1.id = t2.chief_id and 
t2.salary < (select max(salary) * 0.1 from T_EMPLOYEE where CHIEF_ID not in(select id from T_CHIEF)) ;

【讨论】:

    【解决方案2】:

    在 sql 服务器中

    1>

    select a.id,a.name from T_DEPARTMENT a join T_EMPLOYEE b on a.ID=b.DEPARTMENT_ID group by a.id having count(*) >=20
    

    2>

    Select salary, (SUM(salary)* 100 / (Select Count(*) from T_EMPLOYEE)) as percentage_sal
        From T_EMPLOYEE
        Group By salary
    

    3>

    select e1.name  from T_DEPARTMENT e1, T_EMPLOYEE e2 where e2.id = e1.chief_id and e1.salary < e2.salary*0.1`
    

    【讨论】:

    • 1 - ORA-00979:分组方式
    • 尝试将一些示例数据添加到表格中,因为问题不清楚要准确回答吗?
    • 它在 sql-server 上执行我不知道 oracle 吗?
    猜你喜欢
    • 2010-09-17
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多