我需要通过计算给雇员的任务数量来创建SQL视图,但只显示具有3个以上任务的雇员。我遇到的问题是在视图中显示计数。我收到的错误是“缺少正确的括号”
CREATE VIEW EMPLOYEE_TASKS (E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME,
T.TASK_ID)
AS SELECT COUNT T.TASK_ID
FROM EMPLOYEE E, TASK T
WHERE E.EMPLOYEE_ID = T.TASK_ID
AND COUNT(T.TASK_ID) > 3;
答案 0 :(得分:2)
您的代码毫无意义。我怀疑你想要
CREATE VIEW EMPLOYEE_TASKS AS
SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, COUNT(*) as num_tasks
FROM EMPLOYEE E JOIN
TASK T
ON E.EMPLOYEE_ID = T.TASK_ID
GROUP BY E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME
HAVING COUNT(*) > 3;
答案 1 :(得分:1)
在创建视图时,可以选择在视图名称之后提供一个列名称的括号列表,但是,该列表不应采用alias.column_name格式,您只需提供列名称即可。此外,如果确实提供了可选的列名列表,则定义视图的查询的投影(选择列表)在其投影中的列数应与列别名列表中的列数相同。
当前,您的视图定义存在以下问题:
E.
和T.
)COUNT T.TASK_ID
是无效的列表达式,count(t.task_id)
是有效的COUNT(T.TASK_ID)
子句中使用WHERE
,但这是WHERE
条款中不允许的聚合函数。答案 2 :(得分:0)
“计数”是一个函数。它需要带括号的参数:
...
AS SELECT COUNT(T.TASK_ID)
...