不允许使用SQL子选择组函数
我在SQL子查询中遇到了一个问题:我需要编写一个查询,返回订阅数(count(employeeNumber))大于允许的最大订阅数(maximum)的课程 在我的原始查询中,我遇到以下错误: 此处不允许使用组函数 查询:不允许使用SQL子选择组函数,sql,oracle,select,subquery,correlated-subquery,Sql,Oracle,Select,Subquery,Correlated Subquery,我在SQL子查询中遇到了一个问题:我需要编写一个查询,返回订阅数(count(employeeNumber))大于允许的最大订阅数(maximum)的课程 在我的原始查询中,我遇到以下错误: 此处不允许使用组函数 查询: SELECT c.CourseName FROM courses c INNER JOIN subscriptions s ON s.courseCode = c.CourseCode INNER JOIN plannedCourses p ON p.CourseCode
SELECT c.CourseName
FROM courses c
INNER JOIN subscriptions s ON s.courseCode = c.CourseCode
INNER JOIN plannedCourses p ON p.CourseCode = s.CourseCode
WHERE COUNT(s.EmployeeNumber) > (SELECT maximum
FROM plannedCourses
WHERE s.CourseCode = p.CourseCode);
表格布局:
我怎样才能达到渴望的结果
提前谢谢 您的查询有多个问题。您使用的是相关子查询,但未使用其
from
子句中的表。我认为目的是:
SELECT c.CourseName
FROM courses c
INNER JOIN subscriptions s ON s.courseCode = c.CourseCode
group by c.CourseName, c.CourseCode
having COUNT(s.EmployeeNumber) > (SELECT "maximum"
FROM plannedCourses p
WHERE c.CourseCode = p.CourseCode);
您可以按如下方式重写查询:
select c.coursename
from courses c
join subscriptions s
on (s.coursecode = c.coursecode)
join PlannedCourses p
on (p.coursecode = c.coursecode)
group by c.coursename
, p.maximum
having count(s.Employeenumber) > p.maximum
我得到了以下错误:“不是一个由表达式组成的组”。。。但也许我的整个问题都错了。。。顺便说一句,我正在使用Oracle数据库。您是否将
where
子句更改为having
子句?@LaurentDeWilde。无论如何,我知道问题出在哪里了。s.CourseCode
需要一个聚合函数。相反,我切换到c.CourseCode
,并将其放入组中。