当前位置: 首页 > 知识库问答 >
问题:

重写不带with子句的sql

裘禄
2023-03-14
with dept_total(dept_name, value) as
     (select dept_name, sum(salary)
     from instructor
     group by dept_name),
dept_total_avg(value) as 
     (select avg(value)
     from dept_total)
select dept_name
from dept_total, dept_total_avg
where dept_total.value >= dept_total_avg.value;

但它不起作用,现在我的大脑也不起作用。请帮忙。

共有1个答案

裴英锐
2023-03-14

您需要在没有访问中间cte的情况下计算部门平均值DEPT_Total

SELECT
    dept_total.dept_name, dept_total.value, cj.dept_av
FROM (
    SELECT
        dept_name, SUM(salary) value
    FROM instructor
    GROUP BY
        dept_name
    ) AS dept_total
CROSS JOIN (
        SELECT
            SUM(salary) / (COUNT(DISTINCT dept_name) * 1.0) dept_av
        FROM instructor
    ) cj
WHERE dept_total.value >= cj.dept_av
;

在原始查询中有2个“公共表表达式”(cte),每个表达式都有一个名称,以便以后可以引用它们。

其中第一个名称为dept_total

 类似资料:
  • 考虑以下查询: 查找薪资总额大于所有部门薪资总额平均值的所有部门 重写此查询而不使用with构造。

  • com.ibm.DB2.jcc.am.sqlsyntaxerroreXception:DB2 SQL错误:sqlcode=-199,sqlstate=42601,sqlerrmc=with;具有WHERE组顺序相交减除UNION),FETCH,driver=4.19.26 但是,如果我直接在大型机控制台中运行相同的查询,它工作得很好。 如何在Spark的sql上下文中使用WITH子句? filt_

  • 问题内容: 我将如何在没有硬编码值的情况下编写此sql语句? 宁愿有这样的事情: 提前致谢.. 问题答案: 用您当前的方式构造SQL查询是一个糟糕的主意,因为它为各种SQL注入攻击打开了大门 。为了正确执行此操作,您必须改为使用“ 预备语句”。这也将解决您目前显然遇到的各种逃避问题。 请注意,这是一个昂贵的调用(除非您的应用程序服务器使用语句缓存和其他类似的功能)。从理论上讲,最好先准备一次语句,

  • 问题内容: 是否可以在WHERE子句中使用LIMIT x? 如果是这样,怎么办? 我正在尝试这样做: 但我收到以下错误: 问题答案: 应该在之后。 句法 :

  • 我正在使用spring将批处理记录插入数据库。但我得到了一个错误:java。sql。SQLException:无法在java之间转换。util。ArrayList和JAVA\u对象。你能帮帮我吗?我做错什么了 错误: 如果使用硬编码值: 或者当我只通过一个int时,它就起作用了。 请帮忙:)

  • 当我尝试执行删除时,将设置为