Как правильно использовать рейтинг выше - PullRequest
0 голосов
/ 18 июня 2020

Ошибка: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '(разделение по имени в порядке counts des c) в качестве ранга от (выберите Name, count (Case_' в строке 4

select Name, counts
from (
select Name, counts,
rank()over(partition by name order by counts desc) as rank
from (
select Name, count(Case_Id) as counts,
from CTD a
left join Agent_Table b 
on a.Agent_ID = b.Agent_ID
group by Name )
group by Name )
where rank < = 2;

СМОТРИТЕ НИЖЕ ДЛЯ СОЗДАНИЯ ТАБЛИЦЫ

создать таблицу, если не существует Agent_Table (Agent_ID int (5), Name varchar (20));

вставить в Agent_Table (Agent_ID, Name) values ​​('1', 'Vijay'), ('2', 'Raje sh'), ('3', 'Sati sh'), ('4 ',' Anji ');

создать таблицу, если не существует CTD (Case_Id int (5), Stage varchar (20), Login_Time varchar (50), Logout_Time varchar (50), Agent_ID int (5), Status varchar (20));

вставить в CTD (Case_Id, Stage, Login_Time, Logout_Time, Agent_ID, Status) значения ('101', 'Maker', '11.05.2019 10:20', '10: 30 ',' 2 ',' Success '), (' 102 ',' Maker ',' 11.05.2019 10:25 ', '10: 35', '1', 'Успех'), ('103', 'Создатель', '11.05.2019 10:40', '10 : 50 ',' 2 ',' Успех '), (' 101 ',' Проверка ',' 11.05.2019 10:45 ',' 11: 00 ',' 3 ',' Успех '), (' 101 ',' Утверждающий ',' 11.05.2019, 11:15 ',' 11:30 ',' 2 ',' Успех '), (' 102 ',' Проверка ',' 11.05.2019 10: 50 ',' 11:00 ',' 1 ',' Отклонить '), (' 102 ',' Создатель ',' 11.05.2019, 11:15 ',' 11:45 ',' 4 ',' Повторная проверка '), (' 103 ',' Проверка ',' 11.05.2019, 11:30 ', '11: 40', '2', 'Отклонить') * 10 32 *

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

У вас была ненужная запятая и отсутствовали необходимые псевдонимы. В любом случае, оконные функции применяются после group by, поэтому вы можете упростить свой запрос как

select Name, 
       counts
from (select Name, 
             count(Case_Id) as counts,
             rank() over (partition by name order by count(Case_Id) desc) as rnk
       from CTD a
       left join Agent_Table b on a.Agent_ID = b.Agent_ID
       group by Name) t1
where rank < = 2;
0 голосов
/ 18 июня 2020

Вы не указали alias для подзапроса, и это может быть причиной появления ошибки.

попробуйте следующее

 select 
    Name, 
    counts
from 
(
    select 
        Name, 
        counts,
        rank() over(partition by Name order by counts desc) as rn
    from 
    (
        select 
            Name, 
            count(Case_Id) as counts
        from CTD a
        left join Agent_Table b 
        on a.Agent_ID = b.Agent_ID
        group by 
            Name
    ) subq
) sub
where rn <= 2;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...