【问题标题】:Oracle homework - I'm stumped甲骨文作业 - 我很难过
【发布时间】:2012-04-04 02:29:12
【问题描述】:

这是我今年 Oracle 作业的最后一个问题,我什至不知道从哪里开始......一定是一个糟糕的大脑一天。

有人可以帮我解决这个问题吗?

使用 WITH 子句编写一个 SELECT 语句来列出那些最高薪水超过整个公司最高薪水一半的职位的 job_title。将您的子查询命名为 MAX_CALC_SAL。将结果中的列命名为 JOB_TITLE 和 JOB_TOTAL,并在 JOB_TOTAL 上按降序对结果进行排序。 提示:检查作业表。您需要加入 JOBS 和 EMPLOYEES 才能显示 job_title。

谢谢!

这就是我目前所拥有的......

WITH MAX_CALC_SAL  AS (
    SELECT e.salary, SUM(e.salary) AS tot_salary
    FROM   employees e JOIN jobs j
    ON     e.job_id = j.job_title
    GROUP BY j.job_title
),
avg_cost AS (
    SELECT SUM(e.salary)/COUNT(*) AS avg_salary
    FROM   e.employee
)
SELECT * 
FROM   e.employee 
WHERE  avg_salary > (SELECT max_salary / 2 
                     FROM j.jobs)
ORDER BY job_total

【问题讨论】:

  • 问题的哪些部分让您感到困惑?到目前为止你有什么?
  • 更重要的是:问题是什么?

标签: oracle oracle11g


【解决方案1】:

您是否正在寻找类似的东西:

WITH max_calc_sal
  AS (SELECT job_id,
             j.job_title,
             MAX(e.salary) AS job_total
        FROM jobs j
       INNER JOIN employees e
       USING (job_id)
       GROUP BY job_id,
                j.job_title)
SELECT job_title,
       job_total
  FROM max_calc_sal
 WHERE job_total > (0.5 * SELECT MAX(job_total)
                            FROM max_calc_sal)
 ORDER BY job_total DESC;

【讨论】:

    【解决方案2】:

    使用WITH 子句定义的名称不会自动出现在您的最终查询中。它们像派生表一样工作,因此您必须从中选择或加入它们,才能获取它们的数据。

    WITH my_with_table AS (SELECT 9 AS X FROM DUAL)
    SELECT X FROM my_with_table;
    

    【讨论】:

    • @APC 我不确定我所做的是否在正确的轨道上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    相关资源
    最近更新 更多