Sql 子查询有子句错误,我缺少什么?

Sql 子查询有子句错误,我缺少什么?,sql,database,sql-server-2005,Sql,Database,Sql Server 2005,为什么我会犯这个错误 SELECT unitCode FROM Enrolment WHERE count(studentID) > (SELECT AVG(Students) AS avgstudents FROM (SELECT COUNT(*) AS Students FROM En

为什么我会犯这个错误

 SELECT        unitCode
        FROM            Enrolment
        WHERE        count(studentID) >
         (SELECT        AVG(Students) AS avgstudents
        FROM            (SELECT        COUNT(*) AS Students
       FROM            Enrolment AS Enrolment_1
        GROUP BY unitCode) AS a))

看起来最后有一个额外的帕伦。我不太懂SQL,所以我不能说是否有其他错误,或者paren是否是一个问题。

在where子句中,我们不能使用聚合函数。可以在HAVING子句中使用countstudentID函数

 SELECT        unitCode
        FROM            Enrolment
        WHERE        count(studentID) >
         (SELECT        AVG(Students) AS avgstudents
        FROM            (SELECT        COUNT(*) AS Students
       FROM            Enrolment AS Enrolment_1
        GROUP BY unitCode) AS a))
检查这个样本

 SELECT        unitCode
        FROM            Enrolment
        WHERE        count(studentID) >
         (SELECT        AVG(Students) AS avgstudents
        FROM            (SELECT        COUNT(*) AS Students
       FROM            Enrolment AS Enrolment_1
        GROUP BY unitCode) AS a))
SELECT department, SUM(sales) as "Total sales"
FROM order_details
GROUP BY department
HAVING SUM(sales) > 1000;
大卫,看看这个

 SELECT        unitCode
        FROM            Enrolment
        WHERE        count(studentID) >
         (SELECT        AVG(Students) AS avgstudents
        FROM            (SELECT        COUNT(*) AS Students
       FROM            Enrolment AS Enrolment_1
        GROUP BY unitCode) AS a))
select count(*),unicode from Enrolement 
    having count(StudentID) > (select avg(Students) ad avgstudents,unitCode
    from table_Name where Enrolement = "some of ur condtion"
    group by unitCode) 
需要更改格式化语法的查询。。相应地检查您的查询业务。

尝试以下操作:

 SELECT        unitCode
        FROM            Enrolment
        WHERE        count(studentID) >
         (SELECT        AVG(Students) AS avgstudents
        FROM            (SELECT        COUNT(*) AS Students
       FROM            Enrolment AS Enrolment_1
        GROUP BY unitCode) AS a))
select unitCode
from Enrolment
group by unitCode
having count(*) > (select avg(c.c) from (select count(*) as c from Enrolment group by unitCode) c);
适当尊重:

 SELECT        unitCode
        FROM            Enrolment
        WHERE        count(studentID) >
         (SELECT        AVG(Students) AS avgstudents
        FROM            (SELECT        COUNT(*) AS Students
       FROM            Enrolment AS Enrolment_1
        GROUP BY unitCode) AS a))

我该把声明放在哪里?在子查询中?在where cluse only的位置,您只需更改该值,而不是在子查询中,选择count,city FROM employee GROUP BY city have count=SELECT maxcount*FROM employee GROUP BY city;你能更新一下你的代码吗?这样我就能正确地看到它了?im使用手机查看此网站,只需告知您需要选择unicode或需要使用聚合函数(如总和、计数)选择任何其他数据。因为如果使用having子句,我们无法在select中没有任何聚合func值的情况下进行选择。能否更改第一个问题中的确切代码以实现having子句?能否将WHERE COUNTSDUNTID>更改为having语句以使其工作?我只想显示值高于AVGSDUNTS的unitCodes子查询