huxiaozhenshuai 2017-06-01 12:02 采纳率: 0%
浏览 2108

Sql中聚合函数的使用问题

因为知道Sql中聚合函数用在子查询中是允许的所以我这样写了一段代码

 select Sno,Cno 
    from SC 
    where SC.Grade>(select AVG(SC.Grade) 
                                from SC X,SC y
                                    where x.Sno=y.Sno) 

结果显示聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。

当我改为

 SELECT Sno, Cno
    FROM    SC  x
    WHERE Grade >=(SELECT AVG(Grade)
                                FROM  SC y
                                   WHERE y.Sno=x.Sno)

时就能通过

所以我想知道为什么第一段代码不能通过呢,他的聚合函数也是用在了子查询中

  • 写回答

1条回答 默认 最新

  • 全栈极简 博客专家认证 2017-06-01 14:02
    关注

    可以定义个变量接收 select AVG(SC.Grade) from SC X,SC y where x.Sno=y.Sno 的值,然后再查询。

    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题