Создать представление с счетчиком в SQL - PullRequest
0 голосов
/ 29 ноября 2018

Мне нужно создать представление в 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;  

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Ваш код просто не имеет смысла.Я подозреваю, что вы хотите:

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; 
0 голосов
/ 29 ноября 2018

При создании представления вы можете дополнительно указать в скобках список имен столбцов сразу после имени представления, однако этот список не должен быть в формате alias.column_name, вы просто указали имена столбцов.Кроме того, если вы предоставляете необязательный список имен столбцов, проекция (список выбора) запроса, который определяет представление, должна иметь такое же количество столбцов в своей проекции, что и в списке псевдонимов столбцов.

В настоящее времяу вас есть следующие проблемы с определением представления:

  1. У вас есть псевдонимы таблиц (E. и T.) в списке псевдонимов столбцов
  2. У вас есть только один столбец впроекция запроса, но четыре псевдонима в списке псевдонимов столбцов представлений
  3. COUNT T.TASK_ID не является допустимым выражением столбца, count(t.task_id) is.
  4. Вы используете COUNT(T.TASK_ID) в предложении WHERE,однако это агрегатная функция, которая не разрешена в предложении WHERE.
0 голосов
/ 29 ноября 2018

«count» - это функция.в скобках нужны аргументы:

...

AS SELECT COUNT(T.TASK_ID)

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...