Получение ORA-00907: отсутствует правая круглая скобка, когда нет лишних круглых скобок слева - PullRequest
2 голосов
/ 09 октября 2019

Вот мой SQL-запрос:

select hck.hacker_id, hck.name, cnt
from (
    Hacker as hck 
    inner join (
       Select hacker_id, count(challenge_id) as cnt 
       from Challenges 
       group by hacker_id
    ) chl_count on hck.hacker_id = chl_count.hacker_id
) having cnt = max(cnt) or 
cnt in (select cnt 
        from chl_count 
        group by cnt 
        having count(hacker_id) = 1) 
order by cnt desc, hck.hacker_id asc;

Здесь у Хакеров есть схема:

Hackers(name, hacker_id)

И у Challenges есть схема

Challenges(hacker_id, ,challenge_id)

Я не вижулюбые пропущенные скобки в запросе. Итак, что не так? Кроме того, другие синтаксисы, такие как запятые, также являются правильными.

1 Ответ

2 голосов
/ 09 октября 2019

Кажется, вы новичок в Oracle SQL.

Вы не можете сделать это: "..FROM (Hacker as hck inner join) ..", но вы можете сделать это так:

WITH chl_count
     AS (  SELECT hacker_id, COUNT (challenge_id) AS cnt
             FROM Challenges
         GROUP BY hacker_id)
  SELECT hck.hacker_id, hck.name, cnt
    FROM Hacker hck INNER JOIN chl_count ON hck.hacker_id = chl_count.hacker_id
  HAVING    cnt = (select max(challenge_id) from Challenges)
         OR cnt IN (  SELECT cnt
                        FROM chl_count
                      WHERE hacker_id= 1)
ORDER BY cnt DESC, hck.hacker_id ASC;

Это должно работатьТеперь.

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